1.HTML表单
大多数情况下,POST请求是通过HTML表单发送的,通常会是如下:
<form action="/process" method="post">
<input type="text" name="first_name"/>
<input type="text" name="last_name"/>
<input type="submit">
</form>
用浏览器打开为:
![](https://img.haomeiwen.com/i3687616/5577da5010c32c92.png)
form标签的type可以是文本行,文本框,单选按钮,复选框,文件上传等,用户把想要传递给服务器的数据输入到元素里。当按下发送提交按钮,数据就会被发送至服务器。
用户输入的数据会以键值对的形式记录在请求的body中,然后以HTTP POST请求的方式发送给服务器。
2.表单的格式
服务端解析POST请求时,需要知道这些键值对在请求body中是如何格式化的,表单的enctype决定了POST请求在发送键值对时将使用何种格式。
<form action="/process" method="post" enctype="application/x-www-form-urlencoded">
<input type="text" name="first_name"/>
<input type="text" name="last_name"/>
<input type="submit">
</form>
格式如下:
-
1.application/x-www-form-urlencoded默认格式
该格式下,浏览器会把HTML表单中的数据编码为一个连续的长查询字符串,不同键值对将使用&符号分割,建和值用=分割。body看上去会是如下:
first_name=asu&last_name=chang
-
2.multipart/form-data
表单中的数据将被转换成一条MIME报文,每个键值对都构成这条报文一部分,并且每个键值对都带有他们各自的内容类型以及内容配置。
如果表单传送的是简单的文本数据,使用RUL编码好。如果是大量数据,编入文件上传,则使用2比较好。
3.GET请求发送表单
实际上,GET请求也是可以发送表单的。所以可以这样写:
<form action="/process" method="get">
<input type="text" name="first_name"/>
<input type="text" name="last_name"/>
<input type="submit">
</form>
GET请求会自动把表单数据包含在URL里面,不通过body传递。
网友评论