HTTP的消息格式是一种纯文本的格式,文本分为三个部分:
请求行
请求头请求体
具体每一部分写什么内容,要看具体的服务要求
试一试
有非常多的工具可以发送http请求,这里推荐一个非常直观的工具
-
安装
vscode
插件REST Clinet
image-20230112114542925 -
新建文件
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
image-20230113190854930
比如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-urlencodedloginId=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--
响应码
响应码(状态码、消息码)是响应行中的一个数字,后面往往跟上一个对应的单词,用于表达服务器对这个响应的整体「态度」
常见的响应码有:
image-20230112131000507
常见的状态码有:
-
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
类型