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 不允许用不需要的字段覆盖必填字段。
问题:
- 有没有更好的方式来描述 API?
- 如果不是
nil | string
“从头开始”编写更新类型的正确方法?
我认为没有更好的方法。唯一的问题是,如果您在创建和更新中都不需要属性,那么您可以创建一个基本类型。
是的,nil | [type]
是正确的选择。您需要能够通过发送 null "clean" 属性。
问题
我正在尝试描述一个 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 不允许用不需要的字段覆盖必填字段。
问题:
- 有没有更好的方式来描述 API?
- 如果不是
nil | string
“从头开始”编写更新类型的正确方法?
我认为没有更好的方法。唯一的问题是,如果您在创建和更新中都不需要属性,那么您可以创建一个基本类型。
是的,
nil | [type]
是正确的选择。您需要能够通过发送 null "clean" 属性。