http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。
百度百科
目前HTTP协议主要分为四个版本:分别是
HTTP 0.9:1991年发布
HTTP 1.0:1996年5月发布
HTTP 1.1:1997年1月发布
HTTP 2: 2015年发布
其中我们常说的HTTP其实为HTTP 1.1这个版本。 URL解析:名称 | 描述 |
protocol(协议) | 指定使用的传输协议:下面列出一些常用的 http 通过 HTTP 访问该资源。格式 HTTP:// https 通过安全的 HTTPS 访问该资源。格式 HTTPS:// file 资源是本地计算机上的文件。格式file:///,注意后边应是三个斜杠ftp 通过 FTP访问资源。格式 FTP:// 另外该传输协议也可以自己定制,具体可参考相关博文 |
hostname(主机名) | 存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。 有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname) 比如:blog.csdn.net |
port(端口) | 指计算机内部或交换机路由器内的端口,不可见。如http的默认端口为80,https默认的端口为443。如果输入时省略,则使用默认端口号。如果为非标准端口号,URL中就不能省略端口号这一项 |
path(路径) | 由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。比如:/zk18286047195 协议+主机+端口+path: https://blog.csdn.net//zk18286047195 |
query(查询) | 可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。比如:?username=zxx&age=18 |
fragment(信息片断) | 可选,又称为锚点,用于指定浏览器中资源的位置 |
#HTTP头详细介绍https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
HTTP请求方法(默认1.1版本):
方法 | 说明 |
GET | get方法请求指定资源的表示形式。使用GET的请求应该只检索数据。 默认get方法传参数为拼接到url后面,但是get同样可以支持request body作为参数。 |
POST | POST方法发送数据给服务器。常用request body作为参数体发送到服务端。 |
PUT | PUT 与 POST 方法的区别在于,PUT方法是幂等的:调用一次与连续调用多次是等价的(即没有副作用),而连续调用多次POST方法可能会有副作用,比如将一个订单重复提交多次。 |
HEAD | HEAD方法请求资源的头部信息, 并且这些头部与 HTTP GET 方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源。 |
DELETE | DELETE请求方法用于删除指定的资源。 |
OPTIONS | OPTIONS方法用于获取目的资源所支持的通信选项。客户端可以对特定的URL使用 OPTIONS 方法,也可以对整站(通过将 URL 设置为“*”)使用该方法。可以用来预检服务端支持的请求方法以及在CORS时获取服务端支持的请求方法与内容类型。 |
TRACE | TRACE 方法 实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。 |
CONNECT | 在 HTTP 协议中,CONNECT 方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。 |
Content-Type实体头部用于指示资源的MIME类型 media type。
在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。浏览器会在某些情况下进行MIME查找,并不一定遵循此标题的值;为了防止这种行为可以将标题 X-Content-Type-Options 设置为 nosniff。
内容类型 | 说明 |
application/x-www-form-urlencoded | 客户端可以通过body发送键值对数据, 例如key1=value1&key2=value2,表单默认的提交数据的格式。数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值. 非字母或数字的字符会被 percent-encoding: 这也就是为什么这种类型不支持二进制数据(应使用 multipart/form-data 代替)。 |
multipart/form-data | 与application/x-www-form-urlencoded不同,这是一个多部分多媒体类型。 首先生成了一个 boundary 用于分割不同的字段,在请求实体里每个参数以------boundary开始,然后是附加信息和参数名,然后是空行,最后是参数内容。多个参数将会有多个boundary块。如果参数是文件会有特别的文件域。最后以------boundary–为结束标识。 multipart/form-data支持文件上传的格式,一般需要上传文件的表单则用该类型。 |
application/json | JSON数据格式,目前互联网接口常用内容类型,符合restfule风格的接口采用该类型,可以很方便的进行信息交互。 |
application/octet-stream | 二进制流数据(如常见的文件下载)。 |
text/html | HTML格式。 |
text/xml | XML格式。 |
#HTTP content-typehttps://www.runoob.com/http/http-content-type.html
HTTP状态码(status):
http状态码 是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分。 注意:有些小伙伴写设计自己接口统一返回值的code的时候,会用http的状态码,或者当接口有异常的时候,直接强制修改http返回的status的值。 个人建议:在接口设计的时候,可以参考HTTP状态的码的设计方式,定义自己系统业务返回码,建议与HTTP码区分开来,并不要直接修改http状态码的返回值。HTTP状态用来标示接口是否已经请求成功,而业务接口返回的code码标示是否调用该接口成功。 精彩推荐
- 程序猿生活-五维能力模型
- 如何设计王者荣耀角色转移服务避免系统崩溃(附服务架构方案)
- 开源项目ZXX-CAS系统从零到一|第四篇:A-RBAC权限服务设计与实现
- 开源项目ZXX-CAS系统从零到一|第三篇:集成数据库服务
- 开源项目ZXX-CAS系统从零到一|第二篇:后端基础架构搭建
- 开源项目ZXX-CAS系统从零到一|第一篇:需求分析
- 微信抢红包到底是怎么抢到的?
- 实战-elasticsearch索引平滑迁移方案
- 武功秘籍之微服务
- 武功秘籍之熔断与降级
- 武功秘籍之限流