标签: openapi

如何使用 Springdoc 删除或隐藏 Swagger UI 中的服务器列表?

如何从 Swagger UI 禁用或隐藏“服务器”下拉列表?

Swagger UI 服务器下拉列表

我的 Maven 依赖项是:

<dependency>
  <groupId>org.springdoc</groupId> 
  <artifactId>springdoc-openapi-ui</artifactId> 
  <version>1.6.13</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

swagger-ui openapi springdoc

5
推荐指数
1
解决办法
1781
查看次数

OpenAPI 规范:什么是适合私有和内部 OpenAPI 文档的许可证?

我的公司使用 Open API Spec 来组织内部 API 的文档,并通过 UI 工具(例如 redoc.ly 或 Swagger)呈现它。API 文档作为私有 git 存储库进行管理,永远不会向公众发布。

私有API文档许可

Swagger 为开源项目提供了很好的示例,例如 MIT、GPL、“Apache 2.0”,但私有 API 文档似乎没有涵盖。

https://spec.openapis.org/oas/latest.html#license-object

{
  "name": "Apache 2.0",
  "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
Run Code Online (Sandbox Code Playgroud)

调查

我看到有些人以这种方式指定他们的许可证。

  license:
    - name: unlicensed
    - url: "www.example.com"
Run Code Online (Sandbox Code Playgroud)

问题

私有 API 文档项目的合适许可证是什么?

您通常如何在私有 Open API 文档中表示许可证对象?

api-doc swagger openapi redoc redocly

5
推荐指数
1
解决办法
1776
查看次数

组织 OpenAPI 代码生成的客户端的最佳方式是什么?

对于内部客户端,OpenAPI 客户端代码生成允许 2 个用例:

  1. 服务客户端:生成的客户端代码与特定服务的 openAPI 绑定,涵盖该服务的所有 API,并由处理服务代码的同一开发人员控制和维护(根据生成的代码的需要),并且没有代码重复

  2. 依赖于使用情况的客户端:每个用例将根据该特定用例使用的端点生成自己的客户端。您获得较小的客户端,仅覆盖正在使用的端点 - 负责维护这些客户端的人员与负责特定用例的人员是同一个人,并且不同生成的客户端之间可能存在代码重复

如果我比较这两个选项,我会看到以下内容:

+-----------------------+------------------------------+------------------------+
| Criteria              | service based clients        | use-case based clients |
+-----------------------+------------------------------+------------------------+
| Ownership             | Service maintainers          | use-case maintainers   |
| Code duplication      | No duplication               | a lot of duplications  |
| Clients sependancy    | Dependancy exists            | No dependancy          |
| Client code stability | When upgrading client        | When updating client   |
| Base url              | Single per client            | Per endpoint (group) …
Run Code Online (Sandbox Code Playgroud)

openapi

5
推荐指数
0
解决办法
111
查看次数

如何声明对现有 Gradle 任务的额外依赖?

Gradle 8.1 (Android Studio Giraffe)要求任务之间显式或隐式依赖关系。如果我要生成要由 Android Gradle 插件使用某些 OpenAPI 工具打包的资源,我不明白如何根据 Gradle 提供的提示来增强 Android Gradle 插件拥有的现有 Gradle 任务:

Possible solutions:
  1. Declare task ':app:generateOpenApiFooBar' as an input of ':app:packageDebugResources'.
  2. Declare an explicit dependency on ':app:generateOpenApiFooBar' from ':app:packageDebugResources' using Task#dependsOn.
  3. Declare an explicit dependency on ':app:generateOpenApiFooBar' from ':app:packageDebugResources' using Task#mustRunAfter.
Run Code Online (Sandbox Code Playgroud)

有没有办法访问现有的“packageDebugResources”任务并添加对我的插件的依赖项?类似以下内容(在我尝试过的任何变体中都不起作用):

tasks.named('packageDebugResources').dependsOn generateOpenApiFooBar
Run Code Online (Sandbox Code Playgroud)

android gradle swagger openapi

5
推荐指数
1
解决办法
1577
查看次数

Swagger 2.0:接受任何(复杂)JSON值的模式

我正在编写Swagger 2.0规范的API基本上是任何JSON值的存储.

我想要一个读取值的路径和一个存储非预定义深度的任何JSON值(null,数字,整数,字符串,对象,数组)的路径.

不幸的是,似乎Swagger 2.0对输入和输出的模式非常严格,并且不允许JSON Schema允许的整套模式.Swagger编辑器不允许使用示例混合值(例如,可以是布尔值或整数的属性)或松散定义的数组(必须严格定义项的类型)和对象.

所以我正在通过定义MixedValue架构来尝试解决方法:

---
swagger: '2.0'
info:
  version: 0.0.1
  title: Data store API
consumes:
- application/json
produces:
- application/json
paths:
  /attributes/{attrId}/value:
    parameters:
    - name: attrId
      in: path
      type: string
      required: true
    get:
      responses:
        '200':
          description: Successful.
          schema:
            $ref: '#/definitions/MixedValue'
    put:
      parameters:
      - name: value
        in: body
        required: true
        schema:
          $ref: '#/definitions/MixedValue'
      responses:
      responses:
        '201':
          description: Successful.
definitions:
  MixedValue:
    type: object
    properties:
      type:
        type: string
        enum:
        - 'null'
        - boolean
        - number
        - integer
        - …
Run Code Online (Sandbox Code Playgroud)

api json swagger-2.0 openapi

4
推荐指数
1
解决办法
7791
查看次数

OpenAPI或swagger.json自动发现

URL上是否存在任何规范或约定swagger.json(或约定的名称),以便可以自动发现我网站的公共API?

api discovery swagger openapi

4
推荐指数
1
解决办法
1324
查看次数

通过Swagger / OpenAPI为AdditionalProperty指定多种类型

我希望在OpenAPI中表示以下JSON对象:

{
  "name": "Bob",
  "age": 4,
  ...
}
Run Code Online (Sandbox Code Playgroud)

属性的数量和属性名称尚未完全确定,因此我希望使用AdditionalProperties。但是,我不太确定如何通过OpenAPI / Swagger 2.0表示它。我尝试了这个:

Person:
  type: object
  additionalProperties:
    type:
      - int
      - string
Run Code Online (Sandbox Code Playgroud)

或等效的JSON:

{
  "Person": {
    "type": "object",
    "additionalProperties": {
      "type": ["int", "string"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但这不太奏效。有什么方法可以保留我要表示的JSON对象的结构,特别是字符串和整数,而不是任意对象类型?

json yaml swagger openapi

4
推荐指数
1
解决办法
2594
查看次数

使用Swashbuckle.Swagger手动添加端点

我正在使用CMS。因此,当我转到“ / painter”时,其路由到“ JobController”。/ plumber也被路由到'JobController'。除此之外,它是MVC而不是WebAPI,因此大张旗鼓不会发现它,这是可以理解并且很好的。

但是我有一个用例,如果我访问/ pianter?json = 1,它将返回json而不是HTML。

因此,作为API UI,我们希望公开此“假”端点,以便设计人员可以看到输出模型。

那么,我是否可以添加一个完全伪造的终结点-仅在招摇的UI中在设计人员和开发人员之间只有一个用户界面?

除了具有可视化的UI外,我们还希望基于openapi标准生成一些TypeScript。

c# swagger swashbuckle openapi

4
推荐指数
1
解决办法
1703
查看次数

如何在OpenAPI 3中引用数组项目示例?

使用此架构定义:

schemas:
  AllContacts:
    type: array
    items:
      $ref: '#/definitions/ContactModel1'
    example:
      - id: 1
        firstName: Sherlock
        lastName: Holmes
      - id: 2
        firstName: John
        lastName: Watson
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果:

[
  {
     "id": 1,
     "firstName": "Sherlock",
     "lastName": "Holmes"
  },
  {
     "id": 2,
     "firstName": "John",
     "lastName": "Watson"
  }
]
Run Code Online (Sandbox Code Playgroud)

现在,我想为单个用户(ContactModel1)和用户数组(AllContacts)的一部分重用Holmes示例。但是,如果我使用引用的示例:

schemas:

  AllContacts:
    type: array
    items:
      $ref: '#/definitions/ContactModel1'
    example:
      Homes:
        $ref: '#/components/examples/Homes'
      Watson:
        $ref: '#/components/examples/Watson'

  examples:

    Holmes:
      value:
        id: 1
        first_name: Sherlock
        last_name: Holmes

    Watson:
      value:
        id: 2
        first_name: John
        last_name: Watson
Run Code Online (Sandbox Code Playgroud)

我在Swagger UI中得到了这个意外的结果: …

swagger-ui openapi

4
推荐指数
1
解决办法
5989
查看次数

Swagger 2.0(OpenApi 3.0)中的BeanConfig(或类似的?)

我目前正在将我们的API文档(即Swagger 1.5)迁移到Swagger 2.0(OpenApi 3.0)

API文档是Swagger文档,它使用maven包swagger-annotations和Java注释通过Java注释生成swagger-jaxrs。我已经用新版本更新了pom.xml,因此它看起来像:

        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>2.0.6</version>
        </dependency>
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-jaxrs2</artifactId>
            <version>2.0.6</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

并且所有旧注释都被新注释替换(变化很大)并且看起来不错。

关键是我们使用BeanConfig来定义文档的常规配置并自动扫描所有REST资源,因此文档是在自动生成的/swagger.json

问题是我无法找到做这样的事情,创建使一切变得在产生BeanConfig和自动扫描资源的“新路” /swagger.json/openapi.json(也许现在是一样的东西OpenAPIDefinition?)

如果有人能指出我正确的方向,我将不胜感激。

java migration swagger openapi

4
推荐指数
2
解决办法
1485
查看次数