Skip to content

RESTful 风格 #120

Open
Open
@hoperyy

Description

@hoperyy

名词解释

REST: Representational State Transfer。表现层状态转化。也可叫 “资源表现层状态转化”。

RESTful 风格

  • 每一个 URI 代表一种资源
  • 客户端和服务器之间,传递这种资源的某种表现层
  • 客户端通过四个 HTTP 动词,对服务器端资源进行操作,实现"表现层状态转化"

资源(URI)

URI 指向资源,URI 只表现资源的位置。

  • 动词:URL 不应含有动词,应该是名词。动词应该放在 HTTP 协议中。
  • 版本:资源版本放入 URI,也可以将版本放在 HTTP 头中。
  • 过滤:API 提供参数,返回过滤结果。参数的设计允许存在冗余,即允许 API 路径和 URL 参数偶尔有重复。

表现层

资源呈现的形式,表现不应在 URL 呈现,可以放在 Accept/Content-Type

状态转化

    • POST:新建/更新。
    • DELETE:删除。
    • PUT:更新。客户端提供全部更新信息。
    • PATCH:更新。客户端提供部分更新信息。
    • GET:获取。
    • HEAD:获取资源的元数据。
    • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

状态码

  • 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
  • 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
  • 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
  • 204 NO CONTENT - [DELETE]:用户删除数据成功。
  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
  • 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
  • 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
  • 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
  • 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
  • 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
  • 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
  • 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

参考资料

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions