
REST
REST(REpresentational State Transfer)通常可以理解为一套设计网络应用 API的指导原则,核心思想是把网络应用通信看作是对资源的操作,所有API都可看作是对资源的增删改查操作。与rest兼容的系统,通常称为RESTful系统。
REST原则由计算机科学家Roy Fielding在2000年的博士论文中提出,不仅限于在web中使用,本文只关注在web中使用的情况。
REST原则
- 网络上的所有事物都被抽象为资源;
- 每个资源都有唯一的资源标识符(URI);
- 同一个资源具有多种表现形式(xml, json, html等);
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过几个HTTP动词,对服务器端资源进行操作;
- 所有的操作都是无状态的。
HTTP方法
对资源的不同操作都有相应的http方法
GET
获取资源,GET请求必须是安全且幂等的,幂等是指只要参数相同多次操作结果都是相同的。
获取ID为1的用户信息
GET /user/1
POST
POST通常用于创建新资源,但也可以用于更新资源,POST不是幂等的。
创建新用户(新用户信息在body中)
POST /user
PUT
保存指定的资源。PUT可以创建新资源或更新现有资源。PUT请求是幂等的,这是与POST请求之间的主要区别。PUT替换现有的资源,如果只提供了资源的部分信息,未提供部分的资源信息将被设为空。
修改用户(ID为1)信息(用户信息在body中)
PUT /user/1
PATCH
更新资源,但只保存指定字段。PATCH请求既不安全也不幂等,因为PATCH操作不能确保更新了整个资源。
PATCH /user/1
DELETE
删除资源。
删除用户(ID为1)
DELETE /user/1
HTTP状态码
状态码表示HTTP请求的结果
- 1XX – 提示信息
- 2XX – 成功
- 3XX – 重定向
- 4XX – 客户端错误
- 5XX – 服务端错误
Media types (媒体类型)
HTTP头中的字段 Accept和content-type 描述发送或请求的内容类型。如果客户端请求json格式,则可以将Accept设置为application/json。如果服务端发送xml,则将content-type设为application/xml。