RAML 对资源 PATCH 的支持 (RFC 7396)

RAML support for a resource PATCH (RFC 7396)

问题

我正在尝试描述一个 API,它应该有资源 PATCH 方法像 RFC 7396 中描述的那样工作。
基本上,POST 方法在其主体中有一组属性,有些需要,有些不需要。
PATCH(根据某些标准)有 no 字段是必需的 - 请求正文仅包含您要更新的字段,另外 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,因为它应该 return 所有字段和附加 id,更新无法继承自创建,因为 RAML 不允许用不需要的字段覆盖必填字段。

问题:

  1. 有没有更好的方式来描述 API?
  2. 如果不是nil | string“从头开始”编写更新类型的正确方法?
  1. 我认为没有更好的方法。唯一的问题是,如果您在创建和更新中都不需要属性,那么您可以创建一个基本类型。

  2. 是的,nil | [type] 是正确的选择。您需要能够通过发送 null "clean" 属性。