HTTP
相关链接:
状态码的类别
| 类别 | 原因 | |
|---|---|---|
| 1XX | Informational(信息性) | 接收的请求正在处理 |
| 2XX | Success(成功) | 请求正常处理完毕 |
| 3XX | Redirection(重定向) | 需要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误) | 服务器处理请求出错 |
2XX 成功
200 OK
从客户端发来的请求在服务器端被正常处理了
204 No Content
服务器接受的请求已成功处理,但无资源可返回
返回的响应报文中不含实体的主体部分,也不允许返回任何实体的主体。
206 Partial Content
客户端进行了范围请求,服务器成功执行了这部分GET请求
3XX 重定向
301 Moved Permanently
永久性重定向,请求的资源已被分配了新的URI
302 Found
临时性重定向,请求的资源已被分配了新的URI(临时)
303 See Other
请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
当301、302、303响应状态码返回时,几乎所有浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。
304 Not Modified
服务器端资源未改变,可直接使用客户端未过期的缓存
客户端发送附带条件的请求时,服务器端允许请求访问资源,但请求未满足条件。
307 Temporary Redirect
临时重定向(POST不会变成GET)
4XX 客户端错误
400 Bad Request
请求报文中存在语法错误
401 Unauthorized
发送的请求需要有通过HTTP认证的认证信息
若之前已进行过一次请求,则表示用户认证失败
403 Forbidden
对请求资源的访问被服务器拒绝了
404 Not Found
服务器上无法找到请求的资源/服务器端拒绝请求且不想说明理由
5XX 服务器错误
500 International Server Error
服务器端在执行请求时发生了错误
503 Service Unavailable
服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
关于GET和POST的两种说法
POST比GET更安全???
➣ HTTP是明文协议,所以没有哪个更安全的说法。
GET相对POST而言数据长度存在限制???
➣ URL的长度两者都没有限制,取决于服务器等因素。
RESTful架构
相关链接:
REST
Representational State Transfer 表现层状态转化
特点:资源、统一接口、URI和无状态
- 资源
资源是以 json(或其他Representation) 为载体的、面向用户的一组数据集,资源对信息的表达倾向于概念模型中的数据:
总是以某种 Representation 为载体显示的,即序列化的信息;
常用的 Representation 是json(推荐) 或者 xml(不推荐) 等;
Representation 是REST架构的表现层。
- 统一接口
数据的原操作CRUD(create、read、update、delete)分别对应于HTTP方法:GET获取资源、POST新建资源(也可用于更新资源)、PUT更新资源、DELETE删除资源,统一了数据操作的接口。
- URI
每个资源至少有一个URI与之对应,最典型的URI即URL。
- 无状态
对每个资源的请求,都不依赖于其他资源或其他请求。
每个资源,都是可寻址的,都有至少一个url能对其定位。
RESTful架构
如果一个架构符合REST原则,就称它为RESTful架构。
每一个URI代表一种资源(URI中不能包含动词及版本号)
客户端和服务器之间,传递这种资源的某种表现层
客户端通过4个HTTP动词,对服务器端资源进行操作,实现“表现层状态转化”
认证机制
使用认证机制来确定访问的用户是谁,是否被允许进行对数据的使用、修改、创建及删除。常用的认证机制包括Session Auth(通过用户名密码登陆)、Basic Auth、Token Auth和OAuth,常用的是后3种。
Basic Auth只需提供用户名和密码即可,但是有暴露给第三方客户端的风险。
Token Auth不将用户名和密码发送给服务器作用户认证,而是向服务器发送一个服务器端事先生成的 token 来作认证。
OAuth(开放授权)允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的第三方系统在特定的时段内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。