Damon小站

理解REST

Jul 17, 2016 - 1 minute read - Comments

REST(Representational State Transfer:表述性状态传递),由Roy Fielding在他2000年时的 博士论文中引入和定义的。 REST是为分布式定义的一个架构形式,它不是一个标准,但有一些限制:如状态,client/server关系,统一的接口形式。 REST通常用HTTP实现。

REST原则

  • 资源 可以通过结构化的URI方便导出
  • 表述性 通过JSON或者XML来表述数据对象和属性
  • 消息 显式使用HTTP方法(GET,POST,PUT,DELETE)
  • 无状态 client和server之间的交互无上下文,状态依赖和扩展是可以扩展,client不保存session状态。

HTTP方法

使用HTTP方法匹配CRUD(create, retrieve, update, delete)操作。

GET

获取信息,GET请求必须安全并且幂等,即无论同一个参数请求多少次,都返回同样的结果。 可以有副作用,但用户并不关注这个副作用,所以不能运行系统中至关重要的操作。 请求可以是部分或者条件的。

示例为用ID为1的获取地址:

GET /addresses/1

POST

通常POST用来创建一个新的实体,但不用来更新一个实体。

创建新的地址

POST /addresses

PUT

在URI中存储实体,可以用来创建一个新的实体或者更新一个实体。一个PUT请求是幂等的。 幂等是PUT动作和POST请求之间的最大差异

修改ID为1的地址

PUT /addresses/1

注意:PUT替换原来已经存在的实体,如果仅提供数据元素的子集,REST将更新为空或者null。

PATCH

更新URI中的指定字段,PATCH是幂等的。

PATCH /addresses/1

DELETE

移除资源,但不需要立即移除资源,可以异步处理或者很长时间的请求。

DELETE /addresses/1

HTTP状态码

HTTP请求结果的的状态显示

  • 1xx - 信息
  • 2xx - 成功
  • 3xx - 跳转
  • 4xx - client错误
  • 5xx - server错误

Media类型

HTTP请求头中的AcceptContent-Type可以用来描述HTTP中发送或者请求的内容。当client 设置Acceptapplication/json 时,希望请求可以返回一个JSON信息。当client设置 Content-Typeapplication/xml时,client将使用XML数据进行请求。

来自:https://spring.io/understanding/REST

Tags: REST

异步编程的Promise模式

comments powered by Disqus