HTTP协议

一.http请求消息格式

1.请求行request line

里面包含了三部分内容:请求的方法,操作的地址,协议的版本号

例如

GET /mgr/login.html HTTP/1.1

1.请求方法:GET(从服务器获取信息)POST(向服务器提交信息)PUT(提交更改信息)DELETE(删除信息)

2.操作的地址:请求行里面还包括了url,比如

/mgr/login.html

url特别要注意的是 url参数 ,英文叫 url query String

什么是url参数?

比如:

https://www.baidu.com/s?wd=iphone&rsv_spt=1

问号后面的部分 wd=iphone&rsv_spt=1 就是 url 参数,

每个参数之间是用 & 隔开的。

上面的例子中 有两个参数 wd 和 rsv_spt, 他们的值分别为 iphone 和 1

2.请求头 request headers

以下示范请求头

GET /mgr/login.html HTTP/1.1   //这是请求行

Host: www.baiyueheiyu.com      //请求头,这里是网址,即使是同一个ip或同一个端口都可以运行好多网站
User-Agent: Mozilla/6.0 (compatible; MSIE5.01; Windows NT) //请求头,这里表示客户端类型,Mozilla代表火狐浏览器
Accept-Language: zh-cn     //这是请求头,这里表示客户端希望服务端使用中文
Accept-Encoding: gzip, deflate   //这是请求头

请求头是http请求行下面的 的内容,里面存放 一些 信息。比如,请求发送的服务端域名是什么, 希望接收的响应消息使用什么语言,请求消息体的长度等等。通常请求头 都有好多个,一个请求头 占据一行。

单个请求头的 格式是: 名字: 值

HTTP协议请求头有一些是已经规定好的,例如Host就是定义好的,点击查看MDN的描述

开发者也可以在HTTP消息中 添加自己定义的请求头

在谷歌浏览器中可以用view source查看源信息

 3.消息体 message body

请求的url、请求头中 可以存放 一些数据信息, 但是 有些数据信息,往往需要 存放在消息体中。

特别是 POST、PUT等请求,添加、修改的数据信息 通常都是 存放在 请求消息体 中的。

如果 HTTP 请求 有 消息体, 协议规定 需要在 消息头和消息体 之间 插入一个空行, 隔开 它们。

请求消息体中保存了要提交给服务端的数据信息。

比如:客户端要上传一个文件给服务端,就可以通过HTTP请求发送文件数据给服务端。

文件的数据 就应该在请求的消息体中。

再比如:上面示例中 客户端要添加药品,药品的名称、编码、描述,就存放在请求消息体中。

WEB API 请求消息体 通常是某种格式的文本,常见的有

  • Json
  • Xml
  • www-form-urlencoded

 通过谷歌浏览器中查看request Payload 可以查看消息体,消息体就是存放信息的

二.http响应消息格式

下面是1个http响应消息的示例

HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 08:08:27 GMT
Server: WSGIServer/0.2 CPython/3.7.3
Content-Type: application/json
Content-Length: 37
X-Frame-Options: SAMEORIGIN
Vary: Cookie

{"ret": 0, "retlist": [], "total": 0}

HTTP响应消息包含如下几个部分

1.状态行 status line

状态行在第一行,包含3个部分:

  • 协议版本

    上面的示例中,就是 HTTP/1.1

  • 状态码

    上面的示例中,就是 200

  • 描述状态的短语

    上面的示例中,就是 OK

我们重点来看一下状态码,它表示了 服务端对客户端请求的处理结果 。

状态码用3位的数字来表示,第一位 的 数字代表 处理结果的 大体类型,常见的有如下几种:

• 2xx

通常 表示请求消息 没有问题,而且 服务器 也正确处理了

最常见的就是 200

• 3xx

这是重定向响应,常见的值是 301,302, 表示客户端的这个请求的url地址已经改变了, 需要 客户端 重新发起一个 请求 到另外的一个url。

• 4xx

表示客户端请求有错误, 常见的值有:

400 Bad Request 表示客户端请求不符合接口要求,比如格式完全错误

401 Unauthorized 表示客户端需要先认证才能发送次请求

403 Forbidden 表示客户端没有权限要求服务器处理这样的请求, 比如普通用户请求删除别人账号等

404 Not Found 表示客户端请求的url 不存在

• 5xx

表示服务端在处理请求中,发生了未知的错误。

通常是服务端的代码设计问题,或者是服务端子系统出了故障(比如数据库服务宕机了)

2.响应头 response headers

响应头 是 响应状态行下面的 的内容,里面存放 一些 信息。 作用 和 格式 与请求头类似,不再赘述。

3.消息体 message body

有时候,http响应需要消息体。

同样, 如果 HTTP 响应 有 消息体, 协议规定 需要在 消息头和消息体 之间 插入一个空行, 隔开 它们。

比如,请求 列出 药品 信息,那么 药品 信息 就在HTTP响应 消息体中

再 比如,浏览器地址栏 输入 登录网址,浏览器 请求一个登录网页的内容,网站服务器,就在响应的消息体中存放登录网页的html内容。

和请求消息体一样,WEB API 响应消息体 通常也是某种格式的文本,常见的有:

  • Json
  • Xml
  • www-form-urlencoded

响应的消息体在Response中查看,响应消息体解析数据在Preview中查看 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值