HTTP中POST提交数据的四种方式详解

首先说一下为什么写这篇文章,以前写客户端的时候,要经常调用后端的接口,一般很多公司的接口,都是统一POST提交方式

服务端响应的是 JSON 格式字符串,方便统一管理,当时对POST不太清楚,开始的时候,不觉得有啥

但是真正等到自己写一个独立的技术社区的时候,也就是 www.helloworld.net ,需要上传,需要表单提交等

才发现,不懂这些,用到了的时候,很是费劲,很耽误时间。

下面就当是复习了,学习一下GET , POST 这两种最常用的提交方式

HTTP 请求方法有9种,分别是

最常用的还是 GET , POST

我们知道,http是一个通信协议,啥叫通信协议,通信嘛,就是两个人要沟通,协议嘛,就是怎么沟通

比如我说A,你知道我饿了想吃东西了,我再说 A 米饭, 你就知道我饿了,并且想吃米饭了。

对的,协议就是双方提前商量好的沟通的内容的格式

HTTP通信协议就是 HTTP客户端和HTTP服务端 双方规定好的格式

那么这个HTTP消息,有哪几部分组成呢

很简单,HTTP消息包含两部分

  • 请求头
  • 请求体

比如我们在浏览器中发一个请求www.helloworld.net 回车,此时我们发的是GET请求

那么请求头是:

注意: HTTP 的GET请求,是没有请求体的,这也就是为什么有些公司统一封装请求为POST,而不是GET的原因了

因为POST是有请求体的,可以带大量的数据,GET因为没有请求体,携带参数只能放在URL中,能带的数据量是比较少的。

GET 访求方法最常用,也是最简单的一种,像其语义一样,GET 就是获取文件的意思

所以GET请求就是获取服务器上的某个资源 ,使用也很简单,我们记住下面两点就行了

  • GET 传参数只能在url后面带上参数,比如 http://www.helloworld.net?name=tom&age=23

服务器收到请求就可以解析出来url后面带的参数了,name = tom , age = 23

  • 还有一点,很少有人说,就是上面我们说的,GET请求是没有请求体的

下面我们重点看一下POST请求

POST 是提交的意思,如果我们需要向服务器提交一些数据,就可以使用POST方法

虽然POST是提交的意思,协议规定的也是用POST提交数据,但是现在很多公司并没有这样搞

查询也会用POST,其实它只是个单词,服务端收到 请求后,是查询资源,还是删除资源,还是提交

都可以的,只是看你们公司前后端怎么规定即可。

下面我们看看POST有哪几种提交数据的方式

这也是POST默认的一种方式 ,对应的请求头中的 Content-Type 为 application/x-www-form-urlencoded

我们从浏览器中抓取www.helloworld.net 上的几个请求方式,为例,如下

此种方式,一般是提交key, value 的值。

我之前把这种当作了上面的那种,后来写文件上传的时候,查了一下,原来 不是

这种提交方法一般是上传文件用的多。通常是用在客户端向服务端传送大文件数据,如:图片或者文件。

首先来解释下什么它的编码方式,首先会生成一个很长的 boundary 字符串分界线,表明下面的都是表单内容,然后紧接着跟的是表单中的第一个键值对中的名称,而后一个换行,跟着值。然后再生成一个boundary 字符串分界线,用于分割不同的键值。之后就重复以上操作,详细的流程请看下方的例子。

同样我们以 www.helloworld.net 举例,我们从里面找个接口,抓取一下,看看

从上面我们可以知道,在请求头中的 Content-Type中,有一个 boundary=e42346452as650adf2345fadade

这个boundary后面的字符串都是随机生成的。用于请求体中数据的分段的。

其实就是个分隔符的作用。

这种就是我们现在用的最多的了,而且也非常方便

在请求头中设置 content-type=application/json,就表明请求体中的内容格式为json格式

同样的,服务端在响应的时候,顺应头中也会添加一个 content-type=application/json

同样的也是告诉客户端,我响应给你的响应体中的内容,格式同样为 json 格式

同的样我们也参照 www.helloworld.net 中的一个请求,如下

我们看一下响应体:

这个一直没有遇到过,很少用

其实就是请求消息中,请求体中的内容格式是纯文本xml格式

此种我们就不作介绍

有兴趣的可以下面自己查资料

综上所述,HTTP 的POST四种方法以及GET的简单介绍,我们总结如下:

  • GET请求只能在URL中携带参数,别说请求头中也能带参数,请求头中带参数,是所有的方法都可以的,不算是GET方法的
  • GET请求是没有请求体的
  • POST提交数据有四种方式,分别如下:

​ 注意这种方式,会在请求头中生成一个boundary字段,其对应的值是一个随机生成的字符串,用于分隔请求体中的数据用的

  1. application/json 此种方式,用的最多,也是最常用的方式,不过我在写www.helloworld.net的过程中,很少用这种方式
  2. 因为这种方式有一个缺点,就是服务端在解析的时候,需要创建大量的结构体或者类。所以最后选择了第一种的提交方式
  3. text/xml 这种就不怎么用了,请求体中是xml格式

简单的介绍了一下HTTP的GET,POST的一些知识,希望对你们有用。

网页制作之HTML表单

视频加载中…

HTML表单

HTML 表单用于搜集不同类型的用户输入。

<form> 元素

<form> 元素定义 HTML 表单:

语法:<form></form>

HTML 表单包含表单元素

表单元素指的是不同类型的 input 元素、复选框、单选按钮、提交按钮等等。

<input> 元素有很多形态,根据不同的 type 属性。

1. 文本输入

<input type=\”text\”> 定义用于文本输入的单行输入字段

2、密码框

<input type=\”password\”> 定义单选按钮。

密码框是为了隐藏用户密码信息的输入框,语法形式与文本框差不多,不同的是类型 为 password。

3、单选按钮输入

<input type=\”radio\”> 定义单选按钮。

单选按钮是在表单中有多个选项,且只能选一个的情况下使用。

注:checked表示默认选中项。

如:<input type=\”radio\” name=\”sex\”checked> 男

<input type=\”radio\” name=\”sex\”> 女

表示默认选中男项。

4、复选框(Checkboxes)

<input type=\”checkbox\”> 定义了复选框。

复选框是可以选多个选项的选项框,与单选不同的是复选框可以选取多个选项,而且也可以默认几个选项都处于选中状态。

注:checked表示默认选中项。

如:<input type=\”checkbox\” checked>

5、<select> 元素(下拉列表)

下拉列表是可以选择的列表,当在列表中选择要选的选项时使用,只能选其中一个选项(通过设置也可以选几项)。

语法:

<select>

<option>北京</option>

<option selected>上海</option>

</select>

注:selected 表示默认选中项

6、<textarea> 元素(文本域)

<textarea> 元素定义多行输入字段:

文本域是用在要输入多行文本,填写大量的文字时用到。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。