HTTP权威指南笔记

HTTP方法

HTTP方法 描述
GET 服务器向客户端发送资源
PUT 将客户端数据存储在服务器资源中
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应该程序
HEAD 仅发送命名资源响应中的HTTP首部

URL的语法

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

组件 描述 默认值
方案 访问服务器以获取资源时要使用哪种协议
用户 某些方案访问资源时需要的用户名 匿名
密码 用户名后面可能要包含的密码,中间由冒号分隔 <email 地址>
主机 资源宿主服务器的主机名或点分IP地址
端口 资源宿主服务器正在监听的端口号,很多方案都有默认端口号(HTTP默认的端口号是80) 每个方案特有
路径 服务器上资源的本地名
参数 某些方案用这个组件来指定输入参数。参数为名/值对。URL中可以包含多个参数字段,它们互相之间以及与路径的其余部分之间用分号(;)分隔
查询 某些方案用这个组件传递参数以激活应用程序
片段 通过字符“#”将其与URL的其余部分分隔开来
# 方案(使用什么协议)
# 方案名与大小写无关。
`http://baidu.com` = `HTTP://baidu.com`

# 主机与端口
`http://baidu.com:80`
`http://111.13.101.208:80`

# 用户名和密码
`http://joe:joespasswd@www.joes-hardware.com/sales_info.txt`
# 路径
# 通常很像一个分级的文件系统路径

# 参数
`http://example.com/hammers;sale=false/index.html;graphics=true`

# 查询字符串
`http://anna.52inlove.com?page=1&name=example`

# 片段
`http://anna.52inlove.com/index#foot`

URL解析

请求报文格式

<method> <request-URL> <version>
<headers>

<entity-body>

GET /api/test/detail?page=2 HTTP/1.1
Host: dev.xxx.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json, text/plain, */*

响应报文格式

<version> <status> <reason-phrase>
<headers>

<entity-body>

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 17 May 2019 02:47:20 GMT
Content-Type: application/json

响应码