了解REST
REST(Representational State Transfer)是由Roy Fielding于2000年在他的博士论文中引入和定义的。REST是设计分布式系统的架构风格。这不是一个标准,而是一系列约束条件,如无状态,客户端/服务器关系,统一接口。REST与HTTP并不严格相关,但通常与它相关联。
REST的原则
- 为每个资源设置容易理解的目录结构URI。
- 通过JSON或XML进行数据传输。
- 使用HTTP的方法进行资源访问(例如,GET,POST,PUT和DELETE)。
- 无状态的服务设计,服务器端不应保存过多上下文状态,即每个请求都是独立的。
HTTP方法
使用HTTP方法将CRUD(创建,检索,更新,删除)操作映射到HTTP请求。
GET
检索信息。GET请求必须是安全且幂等的,这意味着无论使用相同的参数重复多少次,结果都是一样的。他们可能有副作用,但用户不希望那样,所以他们不能是对系统至关重要的操作。请求也可以是部分或有条件的。
检索ID为1的地址:
GET /addresses/1
POST
请求URI中的资源用提供的实体做某事。通常,POST被用来创建一个新的实体,但它也可以用来更新一个实体。
创建一个新地址:
POST /addresses
PUT
将实体存储在URI中。PUT可以创建一个新实体或更新现有实体。PUT请求是幂等的。幂等性是PUT请求与POST请求之间的主要区别。
修改ID为1的地址:
PUT /addresses/1
PATCH
只更新URI中实体的指定字段。PATCH请求是幂等的。幂等性是PUT请求与POST请求之间的主要区别。
更新ID为1的地址:
PATCH /addresses/1
DELETE
要求删除资源;但是,资源不必立即删除。它可能是一个异步或长时间运行的请求。
删除ID为1的地址:
DELETE /addresses/1
HTTP状态码
状态码指示HTTP请求的结果。
- 1XX - 信息
- 2XX - 成功
- 3XX - 重定向
- 4XX - 客户端错误
- 5XX - 服务器错误
Media types
在HTTP请求中的Accept和Content-TypeHTTP标头可用于描述请求内正在发送或请求的内容。客户端可能会设置Accept为application/json是否以JSON请求响应。相反,在发送数据时,设置Content-Type为application/xml则告诉客户端请求中发送的数据是XML。
一句话总结
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。