我最近在学习 OpenAPI,想了解最佳实践。假设我有一个名为 的资源Person,它的定义components/schemas如下:
Person:
type: object
required:
- id
- name
- age
properties:
id:
readOnly: true
type: integer
name:
type: string
age:
type: integer
Run Code Online (Sandbox Code Playgroud)
我已将idreadOnly设为只读,因为当我执行postor 时patch,ID 将作为 URL 的一部分传递。请参阅https://swagger.io/docs/specification/data-models/data-types/
name并且age必须在客户端尝试使用post方法创建新人员或get人员时出现,因此它们被定义为required。
我的问题是patch:如果我只想更新一个人的age或name独立的怎么办?理想情况下,我想做类似的事情
PATCH /person/1
{"age": 40}
Run Code Online (Sandbox Code Playgroud)
但是,由于我已name按要求进行了定义,因此我无法做到。我可以想到几种解决方案,但它们都有缺陷:
required限制。但如果我这样做,我将失去对post和的验证get。patch,例如PersonUpdate,使用required删除。显然,这会导致冗余。 …