REST(Representational State Transfer)由Roy Fielding于2000年在他的博士论文中引入和定义,REST是用于设计分布式系统的架构风格,它不是标准,而是一组约束,例如无状态,具备客户端/服务器关系和统一接口,REST与HTTP并不严格相关,但最常与它相关联。json
GET
、POST
、PUT
和DELETE
)。使用HTTP方法将CRUD(建立、检索、更新、删除)操做映射到HTTP请求。安全
检索信息,GET
请求必须是安全且幂等的,这意味着不管使用相同参数重复多少次,结果都是相同的,它们可能有反作用,但用户不指望它们,所以它们对系统的操做不是相当重要的,请求也能够是部分的或有条件的。服务器
检索ID为1的地址:架构
GET /addresses/1
请求URI上的资源对提供的实体执行某些操做,POST
一般用于建立新实体,但也可用于更新实体。app
建立一个新地址:异步
POST /addresses
将实体存储在URI中,PUT
能够建立新实体或更新现有实体,PUT
请求是幂等的,幂等性是PUT
与POST
请求的指望之间的主要区别。分布式
修改ID为1的地址:设计
PUT /addresses/1
注意:PUT替换现有实体,若是仅提供数据元素的子集,则其他数据元素将替换为空或
null
。
仅更新URI上实体的指定字段,PATCH
请求既不安全也不是幂等(RFC 5789),这是由于PATCH
操做没法确保整个资源已更新。code
PATCH /addresses/1
请求删除资源,可是,没必要当即删除资源,它多是异步或长时间运行的请求。xml
删除ID为1的地址:
DELETE /addresses/1
状态码代表HTTP请求的结果。
1XX
— 信息2XX
— 成功3XX
— 重定向4XX
— 客户端错误5XX
— 服务器错误Accept
和Content-Type
HTTP头可用于描述HTTP请求中发送或请求的内容,若是客户端正在请求JSON格式的响应,则能够将Accept
设置为application/json
,相反,在发送数据时,将Content-Type
设置为application/xml
会告诉客户端请求中发送的数据是XML。