当前位置: 首页 > 知识库问答 >
问题:

嵌套引用在 Swagger UI / OpenAPI 3 中不起作用

邹嘉荣
2023-03-14

我有一个带有嵌套引用的OpenAPI 3.0定义:

Student:
    properties : &BaseStudent
    id:
      type: integer
      format: int64
      description: The ID of the new account.
    name:
      type: string
      description: The human-readable description of this account.
    address:
      $ref : 'address.yaml#/Address'

Address:
    properties : 
     <<* : BaseStudent
    city:
       type: string
      description: City.
    state:
      type: string
      description: State.
    
StudentMarks:
    <<: *BaseStudent
    makr1:
       type: string
      description: Mark1.
    mark2:
      type: string
      description: Mark2.

当我单击 Swagger UI 中的请求选项卡时,它显示一个错误:

无法解析引用,因为:无法解析指针:文档中不存在 /components/schemas/components/schemas/Address

实际上,< code >地址引用应该仅是< code >/components/schemas/。我不确定它为什么引用< code >/components/schemas/components/schemas/Address 。

有没有其他方法来指定不同的路径?

共有1个答案

谭思博
2023-03-14

此问题可能是由 YAML 锚点引起的。

OpenAPI有一种内置的方式来引用定义和进行模型组合 - $refallOf。通常应使用这些关键字来代替 YAML 锚点。

尝试按如下方式重写模式,看看是否能解决问题:

components:
  schemas:

    Student:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The ID of the new account.
        name:
          type: string
          description: The human-readable description of this account.
        address:
          $ref : 'address.yaml#/Address'

    Address:
      allOf:
        - $ref: '#/components/schemas/BaseStudent'
        - properties:
            city:
              type: string
              description: City.
            state:
              type: string
              description: State.
    
    StudentMarks:
      allOf:
        - $ref: '#/components/schemas/BaseStudent'
        - properties:
            mark1:
              type: string
              description: Mark1.
            mark2:
              type: string
              description: Mark2.
 类似资料:
  • 问题内容: 我里面有一个带有超链接标签的,看起来像这样: 这在Chrome和Safari中效果很好,但在Firefox(已测试20版)中不起作用。 怎么了? 问题答案: 为了使其在所有浏览器中都能正常工作,Firefox也必须将其更改为 或如Billy Moat所建议的那样进行引导,则无需您做

  • 问题内容: 按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript是这样的: 问题很简单。 FileUpload1.HasFile ==否。我不知道为什么会这样,但是当我将其放在更新面板中时,它将停止工作。 我已经看到了其他一些线程。但是他们都没有回答为什么会发生这种情况,他们只是指向您可以下载的内容。 编辑:确实,我想要这样做的主要原因是,我可以获取一个..Uploadin

  • 问题内容: 我的目标是让http:// mydomain / route1 渲染React组件Component1和http:// mydomain / route2 渲染Component2。因此,我认为编写如下的路由是很自然的: http:// mydomain / route1可以正常工作,但http:// mydomain / route2却呈现Component1。 然后,我阅读了此问题

  • 我是嵌套路线在我的项目。我有一个pp.js,在其中我定义了路由,在组件中我有更多的路由,我希望它们被嵌套。唯一的问题是我的嵌套路由位于连接到redux的组件中。嵌套路由不能正常工作。 我已经从官方文档中尝试过了,但它不起作用。 https://reacttraining.com/react-router/core/guides/philosophy App.js 下面是我的Redux容器文件,它根

  • 我需要描述一个api,在请求体中有一个带有必填字段的对象,其中一个字段是一个对象本身,它有另一组必填字段。 我正在使用开放api v3和swagger编辑器(https://editor.swagger.io/)在我把我的。将yaml文件放到编辑器上,我生成了一个html客户端( 我希望字段1是必需的,字段2是可选的,但事实并非如此。 这是我的。yaml文件

  • 问题内容: 建立一个多步骤表单(“向导”)。最初是按照本教程进行的,该教程效果很好,但是现在尝试对其进行调整,因此第一步已嵌入首页中,而不是单独的状态。无论我做什么,我都无法创建一条可行的路径。我总是得到: 无法从状态“ home”解析“ .where” 要么 无法从状态“家”解析“ wizard.where” 要么 无法从状态“ home”解析“ wizard.where @” …即使在中效果很