本文已参与「新人创作礼」活动,一起开启掘金创作之路。
引出
HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口。如果使用了https协议且开启强制跳转。 现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。
HTTP请求方法
HTTP/1.1协议中共定义了八种方法,来表明Request-URL指定的资源不同的操作方式。
HTTP1.0定义了三种请求方法:GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
| 方法 | 描述 |
|---|---|
| GET | 请求指定的页面信息,并返回实体主体。 |
| HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。 |
| POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
| PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
| DELETE | 请求服务器删除指定的页面。 |
| CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
| OPTIONS | 允许客户端查看服务器的性能。 |
| TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
| PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新。 |
HTTP响应状态码
向服务器发送一个请求后,服务器会给客户端一个响应,并通过相应状态码来标识响应状态。
| 状态码 | 名称 | 描述 |
|---|---|---|
| 200 | OK | 当您的操作将在响应正文中返回数据时,出现此结果。 |
| 204 | No Content | 当您的操作成功,但不在响应正文中返回数据时,出现此结果。 |
| 304 | Not Modified(重定向) | 当测试实体自上次检索以来是否被修改时,出现此结果。 |
| 403 | Forbidden | 客户端错误 |
| 401 | Unauthorized | 客户端错误 |
| 413 | Payload Too Large(客户端错误) | 当请求长度过长时,出现此结果。 |
| 400 | BadRequest(客户端错误) | 当参数无效时,出现此结果。 |
| 404 | Not Found(客户端错误) | 当资源不存在时,出现此结果。 |
| 405 | Method Not Allowed(客户端错误) | 由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。 |
| 412 | Precondition Failed | 客户端错误 |
| 501 | Not Implemented(服务器错误) | 当未实施某个请求的操作时,出现此结果。 |
| 503 | Service Unavailable(服务器错误) | 当 Web API 服务不可用时,出现此结果。 |
httpbin工具
httpbin是什么?
httpbin是一个用Flask框架编写的开源项目。
该网站能测试HTTP请求和响应的各种信息,比如cookie、ip、headers和登录验证等,且支持GET、POST等多种方法,对web开发和测试很有帮助。
官方网站:httpbin.org/
开源地址:github.com/Runscope/ht…
可用API
kttpbin中的支持的API涉及HTTP请求方法、请求权限、响应状态码、Cookie等多种API,可用范围如下图所示。
以GET方法为例,对httpbin.org/get地址进行请求,可以得到如下响应数据:
{
"args": {
},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
"Host": "httpbin.org",
"Sec-Ch-Ua": "" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"",
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": ""Linux"",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-626b6aad-3254844a2ffa93953eb0bbe9"
},
"origin": "35.78.203.43",
"url": "https://httpbin.org/get"
}
注意:在HTTP Methods的API中,除了GET请求可以通过浏览器直接访问外,其余请求均需要通过测试软件进行测试。