我试图描述一个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不允许使用不需要的字段覆盖必填字段。
id
是从头开始编写更新类型"" 答案 0 :(得分:1)
我认为没有更好的方法。唯一的问题是,如果您在创建和更新中都没有要求属性,那么您可以创建基本类型。
是的,nil | [type]
是要走的路。您需要能够通过发送null来“清理”该属性。