小编Dri*_*leX的帖子

如何正确使用 OpenAPI 使用补丁方法更新资源?

我最近在学习 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:如果我只想更新一个人的agename独立的怎么办?理想情况下,我想做类似的事情

PATCH /person/1

{"age": 40}
Run Code Online (Sandbox Code Playgroud)

但是,由于我已name按要求进行了定义,因此我无法做到。我可以想到几种解决方案,但它们都有缺陷:

  1. 解除required限制。但如果我这样做,我将失去对post和的验证get
  2. 为 使用单独的模式patch,例如PersonUpdate,使用required删除。显然,这会导致冗余。 …

api rest swagger openapi

8
推荐指数
2
解决办法
1627
查看次数

标签 统计

api ×1

openapi ×1

rest ×1

swagger ×1