HTTP使用指南 | 青训营笔记

57 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第5天

本篇笔记着重于HTTP的各方面知识。 主要分五部分:

  1. 初识:背景知识:什么是HTTP,其基本特点
  2. 协议分析:发展历程,报文结构(包括方法与状态码)
  3. 常见场景:静态资源、登录
  4. 实际应用:浏览器与node中使用
  5. 了解更多协议:不止HTTP协议一个选择

初识HTTP

什么是HTTP?

  1. Hyper Text Transfer Protocol超文本传输协议,可以承载多种体裁,比如HTML、CSS、JS以及与server通信相关的API。
  1. 应用层协议,基于TCP协议。(应用层两个重要的协议:TCP UDP)
  2. 请求响应。
  3. 简单可扩展。由于是比较简单的请求,同时提供扩展的能力,Header里可以自定义扩展header,只要server彼此能了解该header
  4. 都是无状态的协议。

image.png

协议分析

协议发展:

image.png 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

状态码

image.png

  • 200 OK - 客户端请求成功
  • 301 - 资源(网页等)被永久转移到其他URL了
  • 302-临时跳转
  • 401 Unauthorized -请求未经授权
  • 404-请求资源不存在,可能是输入了错误的URL500 -服务器内部发生了不可预期的错误
  • 504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应。

RESTful API

是一种符合RESTful设计风格的API。遵循以下比较关键的点:

  1. 每一个URI代表一种资源;比如以下每一行的zoos,就是一种资源。
  2. 客户端与服务器之间,传递这种资源的某种表现层。
  3. 客户端通过HTTP method(比如GET POST),对服务器资源进行操作,实现“表现层状态转化”。

每一个请求携带着一种资源,比如GET带着zoos。

image.png