[网络] HTTP消息传送格式
HTTP的消息格式是一种纯文本的格式,文本分为三个部分:
请求行
请求头
请求体
具体每一部分写什么内容,要看具体的服务要求
试一试
有非常多的工具可以发送http请求,这里推荐一个非常直观的工具
-
安装
vscode插件REST Clinet

-
新建文件
xxx.http -
编写请求文本
POST /api/user/login HTTP/1.1 Host: study.duyiedu.com Content-Type: application/json { "loginId":"admin", "loginPwd":"123123" } -
发送请求
熟悉关键信息
请求方法
请求行中的第一个单词是请求方法
在HTTP协议中,请求方法仅有语义的区别,只是表达了这次请求的「愿望」。
关于请求方法的协议原文见 HTTP/1.1规范RFC7231-Chapter4
比如GET表达了客户端想要获取一些东西,POST表达了客户端想要提交一些东西
常见的请求方法有:
GET:获取POST:提交PUT:修改DELETE:删除
具体在开发中应该选择什么请求方法,一定是看服务方的要求
通常情况下:
- 获取数据一般使用
GET - 提交数据一般使用
POST - 各种静态资源的获取,一般使用
GET
请求头 - Host
Host标注了URL地址中的Domain + Port
示例:
Host: study.duyiedu.com
请求头 - Content-Type
Content-Type标注了附带的请求体是什么格式
比如,请求体的数据为loginId:admin, loginPwd:123456,请求体可以用不同的格式发出
Content-Type: application/x-www-form-urlencoded
loginId=admin&loginPwd=123123
Content-Type: application/json
{ "loginId": "admin", "loginPwd": "123123" }
Content-Type: multipart/form-data; boundary=aaa
--aaa
Content-Disposition: form-data; name="loginId"
admin
--aaa
Content-Disposition: form-data; name="loginPwd"
123456
--aaa
Content-Disposition: form-data; name="avatar"; filename="small.jpg"
Content-Type: image/jpeg
文件的二进制
--aaa--
响应码
响应码(状态码、消息码)是响应行中的一个数字,后面往往跟上一个对应的单词,用于表达服务器对这个响应的整体「态度」
常见的响应码有:

常见的状态码有:
-
200 OK:一切正常。
-
301 Moved Permanently:资源已被永久重定向。
你的请求我收到了,但是呢,你要的东西不在这个地址了,我已经永远的把它移动到了一个新的地址,麻烦你取请求新的地址,地址我放到了响应头的Location中了试试请求:www.douyutv.com
-
302 Found:资源已被临时重定向。
你的请求我收到了,但是呢,你要的东西不在这个地址了,我临时的把它移动到了一个新的地址,麻烦你取请求新的地址,地址我放到了请求头的Location中了 -
304 Not Modified:文档内容未被修改。
你的请求我收到了,你要的东西跟之前是一样的,没有任何的变化,所以我就不给你结果了,你自己就用以前的吧。啥?你没有缓存以前的内容,关我啥事 -
400 Bad Request:语义有误,当前请求无法被服务器理解。
你给我发的是个啥啊,我听都听不懂 -
403 Forbidden:服务器拒绝执行。
你的请求我已收到,但是我就是不给你东西 -
404 Not Found:资源不存在。
你的请求我收到了,但我没有你要的东西 -
500 Internal Server Error:服务器内部错误。
你的请求我已收到,但这道题我不会,解不出来,先睡了
响应头 - Content-Type
Content-Type标注了附带的响应体是什么格式
常见的值有:
text/plain: 普通的纯文本text/html:html文档text/javascript或application/javascript:js代码text/css:css代码image/jpeg:jpg图片attachment:附件- 其他
MIME类型


浙公网安备 33010602011771号