美文网首页REST API
API 入门 (31) 使用 OpenAPI 描述 REST A

API 入门 (31) 使用 OpenAPI 描述 REST A

作者: 品品下午茶 | 来源:发表于2022-04-28 08:02 被阅读0次

我们已经介绍了如何使用 OpenAPI 规范, 对添加自行车和查询自行车两个操作进行了描述。如果你细心阅读,就会发现:这两个操作都对自行车资源进行了描述。也就是说,同一个资源,被描述了两次。每个人都不想重复发明轮子,本文就来解决这个问题。

定义组件

API 入门 (8) OpenAPI 组件对象一文中,简要介绍了组件对象。我们可以把相同的数据描述,放到组件集合属性中,并在需要使用该数据的地方进行引用。

接下来,我们就在组件集合属性中,定义一个自行车资源组件。

因为自行车资源的数据结构定义是一个 schema ,所以,我们需要在 组件集合属性(components) 下的 schemas 属性中,定义一个自行车的 schema.

openapi: '3.0.2'
info:
  title: 自行车在线商城 REST API 文档。
  version: '1.0'
servers:
  - url: https://api.server.test/v1
[...]
components:
  schemas:
    bike:
      type: object
      description: 自行车
      required:
        - reference
        - name
        - price
      properties:
        reference:
          description: 自行车唯一标识
          type: string
        name:
          type: string
        price:
          type: number
        weight:
          type: number
        description:
          type: string
  • components:表示可重用的组件集合对象
  • schemas:表示可重用的 schema
  • bike:表示可重用的 schema 的名称
  • object:表示一个 JSON 对象

引用组件

我们定义了可重用的组件后,就可以在需要使用这个组件的地方进行引用了,不需要再重复定义。

在添加自行车的时候,进行引用。

  responses:
    "200":
      description: 已添加的自行车信息
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/bike"

在查询自行车的时候,进行引用。

responses:
  "200":
    description: 满足查询条件的自行车
    content:
      application/json:
        schema:
          type: array
          description: 自行车集合
          items:
            $ref: "#/components/schemas/bike"

在引用组件时,我们使用了 $ref 属性,该属性的值表示组件所在的路径。上面的两个引用,与所引用的组件位于同一个文档内,称为本地引用。当然,在一个文档中,也可以引用其他文档中的组件。

小结

在 OpenAPI 文档中,使用可重用组件,能够避免对同一数据的重复描述。这样做,不仅可以使文档更精简,也增强了文档的可维护性。

相关文章

网友评论

    本文标题:API 入门 (31) 使用 OpenAPI 描述 REST A

    本文链接:https://www.haomeiwen.com/subject/spekyrtx.html