RAML支持资源PATCH(RFC 7396)

时间:2018-01-28 21:09:36

标签: rest raml

问题

我试图描述一个API应该有资源PATCH方法像RFC 7396中描述的那样工作。
基本上POST方法在它的主体中有一组属性,有些则不需要 PATCH(根据某些标准)需要字段 - 请求正文仅包含您要更新的字段,此外API允许客户端清除"清除"通过发送null来填写字段。

实施例

#%RAML 1.0

title: test

mediaType: [application/json]

types:
  Create:
    type: object
    properties:
      description: string
  Retrieve:
    type: Create
    properties:
      id: string
  Update:
    type: object
    properties:
      description?: nil | string


/resource:
  get:
    responses:
      200:
        body:
          type: Retrieve[]
  post:
    body:
      type: Create

  /{id}:
    uriParameters:
      id: string
    get:
      responses:
        200:
          body:
            type: Retrieve
    patch:
      body:
        type: Update
      responses:
        200:
          body:
            type: Retrieve

在示例中我有一个仅为该任务指定的更新类型,因为... Create有一个必需的description,Retrieve继承自Create,因为它应该返回它的所有字段和附加的{ {1}},Update不能从Create继承,因为RAML不允许使用不需要的字段覆盖必填字段。

的问题:

  1. 有没有更好的方法来描述该API?
  2. 如果没有,id是从头开始编写更新类型""
  3. 的正确方法

1 个答案:

答案 0 :(得分:1)

  1. 我认为没有更好的方法。唯一的问题是,如果您在创建和更新中都没有要求属性,那么您可以创建基本类型。

  2. 是的,nil | [type]是要走的路。您需要能够通过发送null来“清理”该属性。