前端必备HTTP知识

231 阅读5分钟

1,http协议状态码

1xx Informational(信息性状态码) 接受的请求正在处理

2xx Success     (成功状态码)         请求正常处理完毕

3xx Redirection(重定向)               需要进行附加操作以完成请求

4xx Client error(客户端错误)         Client error(客户端错误)

5xx Server Error(服务器错误)        服务器处理请求出错


200 OK:表示从客户端发送给服务器的请求被正常处理并返回;

301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL;

302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL;

301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL)

303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源;

302与303的区别:后者明确表示客户端应当采用GET方式获取资源

400 Bad Request:表示请求报文中存在语法错误;

401 Unauthorized:未经许可,需要通过HTTP认证;

403 Forbidden:服务器拒绝该次访问(访问权限出现问题)

404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用;

500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时;

503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求;

2,restFul风格

一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

传统方式操作资源

http://127.0.0.1/item/queryUser.action?id=1 查询,GET http://127.0.0.1/item/saveUser.action 新增,POST http://127.0.0.1/item/updateUser.action 更新,POST http://127.0.0.1/item/deleteUser.action?id=1 删除,GET或POST 

使用RESTful操作资源

【GET】 /users # 查询用户信息列表 

【GET】 /users/1001 # 查看某个用户信息 

【POST】 /users # 新建用户信息  

【PUT】 /users/1001 # 更新用户信息(全部字段)

【PATCH】 /users/1001 # 更新用户信息(部分字段) 

【DELETE】 /users/1001 # 删除用户信

API设计风格基本规则

1.使用名词而不是动词
不要使用:

/getAllUsers
/createNewUser
/deleteAllUser

2.Get方法和查询参数不应该涉及状态改变
使用PUT, POST 和DELETE 方法 而不是 GET 方法来改变状态,不要使用GET 进行状态改变:

3.使用复数名词
不要混淆名词单数和复数,为了保持简单,只对所有资源使用复数。

/cars 而不是 /car
/users 而不是 /user
/products 而不是 /product

4. 使用子资源表达关系
如果一个资源与另外一个资源有关系,使用子资源:

GET /cars/711/drivers/ 返回 car 711的所有司机
GET /cars/711/drivers/4 返回 car 711的4号司机


5.使用Http头声明序列化格式
在客户端和服务端,双方都要知道通讯的格式,格式在HTTP-Header中指定

Content-Type 定义请求格式
Accept 定义系列可接受的响应格式

6.为集合提供过滤 排序 选择和分页等功能
Filtering过滤:

使用唯一的查询参数进行过滤:

GET /cars?color=red 返回红色的cars
GET /cars?seats<=2 返回小于两座位的cars集合

三,Request Headers  和 Response Headers

---------------请求头(request headers)-------------

POST --请求方式 文件名 http版本号
Host:  --请求地址
Connection: 决定当前的事务完成后,是否会关闭网络连接。如果该值是“keep-alive”,网络连接就是持久 的,不会关闭,使得对同一个服务器的请求可以继续在该连接上完成。
Content-Length:  --发送给HTTP服务器的长度
Origin: --起源是来自哪里
X-Requested-With:  --表明是ajax异步请求
Referer: –提供上下文服务器,告诉服务器我是从哪里来的,一般用于网站流量统计。

Accept-Encoding:  --浏览器申明自己接收的编码方式:通常指定压缩、是否支持压缩、支持什么方式压缩(gzip/default)
Accept-Language: --浏览器申明自己接收的语言
Accept: –浏览器接收的媒体类代表浏览器可以处理所有类型

User-Agent: –告诉HTTP服务器客户端浏览器使用的操作系统和浏览器的版本和名称

Content-Type:  --浏览器接收的内容类型、字符集



----------------响应头(response headers)解析-----------

HTTP/ --响应的状态码 200表示正常应答
Date:  --生成消息的具体时间和日期
Last-Modified: --申明资源的最后修改日期和时间
Content-Type:--http服务器告诉浏览器自己响应的对象类型和字符集(并且告诉客户端实际返回的内容的内容类型)

更多类型,例如:
Content-Type:text/html; charset=utf-8
Content-Type:text/html;charset=GB2312
Content-Type: image/jpeg

Content-Length: 54 --http服务器的响应实体正文的长度
Content-Language:da --http服务器告诉浏览器自己响应的语言
Content-Encoding:gzip --http服务器表名自己使用了什么压缩方法
Connection: keep-alive --Connection决定当前的事务完成后,是否会关闭网络连接。如果该值是“keep-alive”,网络连接就是持久的,不会关闭,使得对同一个服务器的请求可以继续在该连接上完成
Cache-Control: private – “private” 表示该响应是专用于某单个用户的,中间人不能缓存此响应,该响应只能应用于浏览器私有缓存