这是我参与「第五届青训营 」笔记创作活动的第5天
本篇笔记着重于HTTP的各方面知识。 主要分五部分:
- 初识:背景知识:什么是HTTP,其基本特点
- 协议分析:发展历程,报文结构(包括方法与状态码)
- 常见场景:静态资源、登录
- 实际应用:浏览器与node中使用
- 了解更多协议:不止HTTP协议一个选择
初识HTTP
什么是HTTP?
- Hyper Text Transfer Protocol超文本传输协议,可以承载多种体裁,比如HTML、CSS、JS以及与server通信相关的API。
- 应用层协议,基于TCP协议。(应用层两个重要的协议:TCP UDP)
- 请求响应。
- 简单可扩展。由于是比较简单的请求,同时提供扩展的能力,Header里可以自定义扩展header,只要server彼此能了解该header
- 都是无状态的协议。
协议分析
协议发展:
0.9只有GET/POST请求。
报文结构
Method
| GET | 请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据 |
|---|---|
| POST | 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用 |
| PUT | 用请求有效载荷替换目标资源的所有当前表示 |
| DELETE | 删除指定的资源 |
| HEAD | 请求一个与GET请求的响应相同的响应,但没有响应体 |
| CONNECT | 建立一个到由目标资源标识的服务器的隧道。 |
| OPTIONS | 用于描述目标资源的通信选项。 |
| TRACE | 沿着到目标资源的路径执行一个消息环回测试。 |
| PATCH | 用于对资源应用部分修改。 |
Safe(安全):
不会修改服务器的数据的方法。GET HEAD OPTIONS
Idempotent(幂等):
同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。所有safe的方法都是Idempotent的。GET HEAD OPTIONS PUT DELETE
状态码
- 200 OK - 客户端请求成功
- 301 - 资源(网页等)被永久转移到其他URL了
- 302-临时跳转
- 401 Unauthorized -请求未经授权
- 404-请求资源不存在,可能是输入了错误的URL500 -服务器内部发生了不可预期的错误
- 504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应。
RESTful API
是一种符合RESTful设计风格的API。遵循以下比较关键的点:
- 每一个URI代表一种资源;比如以下每一行的zoos,就是一种资源。
- 客户端与服务器之间,传递这种资源的某种表现层。
- 客户端通过HTTP method(比如GET POST),对服务器资源进行操作,实现“表现层状态转化”。
每一个请求携带着一种资源,比如GET带着zoos。