标签: openapi

在 Typescript 上创建从 openapi-generator 到 React-query 的适配器

我有 openApi 生成器生成的类。每个类方法都以 HTTP 方法名称结尾,例如“deleteBookUsingDELETE”或“getBookUsingGET”。对于类中的每个方法都应该创建相应的react-query hook。当方法以 GET 结尾时,应使用 useQuery 挂钩,其余 HTTP 方法使用 useMutation。问题是:如何创建类型安全适配器?openApi 生成的类示例(已删除实现)。

export class MetricControllerApi extends runtime.BaseAPI {


async byEndpointUsingGETRaw(requestParameters: ByEndpointUsingGETRequest): Promise<runtime.ApiResponse<MetricDtoResponse>> {

}


async byEndpointUsingGET(requestParameters: ByEndpointUsingGETRequest): Promise<MetricDtoResponse> {
  
}


async byOwnerUsingGETRaw(requestParameters: ByOwnerUsingGETRequest): Promise<runtime.ApiResponse<MetricResponse>> {

}


async byOwnerUsingGET(requestParameters: ByOwnerUsingGETRequest): Promise<MetricResponse> {

}


async byTopicUsingGETRaw(requestParameters: ByTopicUsingGETRequest): Promise<runtime.ApiResponse<MetricResponse>> {

}


async byTopicUsingGET(requestParameters: ByTopicUsingGETRequest): Promise<MetricResponse> {
  
}
}
Run Code Online (Sandbox Code Playgroud)

我设法编写的不是类型安全的适配器

  export class Adapter<T extends object> {
      constructor(private readonly controllerApiInst: T) {
      }
    
      generate(): Record<keyof T, CallableFunction> {
        const prototype = Object.getPrototypeOf(this.controllerApiInst);
        const …
Run Code Online (Sandbox Code Playgroud)

typescript openapi

2
推荐指数
1
解决办法
4432
查看次数

生产环境关闭开放API规范

我在这里看到了类似的答案Swagger 2.x- How do you close off swagger-ui in production所以我想知道是否也可以为开放 API 做类似的事情?我尝试过类似的东西:

@Configuration
@Profile("!prod")
public class OpenAPIConfig 
{
}
Run Code Online (Sandbox Code Playgroud)

但这行不通。有什么想法/建议吗?

java spring spring-boot openapi

2
推荐指数
1
解决办法
3585
查看次数

将 OpenAPI 3 与 Node.JS 结合使用

我想将 OpenAPI 3 集成到我的 node.js 项目中并利用可用的 Swagger 工具。

我注意到 swagger npm 模块已经五年没有更新了。还有其他问题,例如这个(How to use OpenAPI 3.0 in Node.js?),基本上没有得到解答。

肤浅的网络搜索没有给我带来任何结果。

有人对如何在节点中的 swagger 应用程序中实现 OpenAPI 3.* 标准有一些想法/建议吗?即使您找到了有关如何手动执行此操作的教程或一些描述,我也会非常感谢您提供一些指导和建议。

我尝试简单地将 OpenAPI 3 标准放入编辑器 ( swagger project edit) 中,就像使用在线编辑器一样,但它会出现疯狂的错误。我尝试手动更新 swagger.yaml 文档,这也导致节点应用程序崩溃。

新标准(3.* vs 2)的更新更容易阅读、实施和重用,这就是我问这个问题的原因。再次强调,任何指导或帮助将不胜感激。

rest node.js swagger openapi

2
推荐指数
1
解决办法
2254
查看次数

openapi-generator gradle 插件输出目录

我正在使用 openapi-generator Gradle 插件从开放 API 模式生成模型文件。通过 build.gradle 脚本中的这些设置,一切似乎都正常:

openApiGenerate {
globalProperties = [
        apis: "false",
        modelDocs: "false",
        models: "Pet"
]
generatorName = "java"
generateModelTests = false
inputSpec = "$rootDir/src/main/resources/schema/my_schema.json".toString()
outputDir = "$rootDir".toString()
modelPackage = "org.openapi.example.model"
configOptions = [
        dateLibrary: "java8",
        serializationLibrary: "jackson",
        library: "jersey1"
]
Run Code Online (Sandbox Code Playgroud)

}

结果类在正确的包中生成:

在此输入图像描述

问题就在这里 - 我的源代码中不需要它们,我只在编译阶段需要它们。我希望它们在构建目录中生成,以将它们与其他逻辑分开。但是当我将输出目录更改为“$buildDir/ generated”.toString() 时,会发生这种情况:

在此输入图像描述

有没有办法摆脱错误的包“src.main.java”?

java gradle swagger openapi openapi-generator

2
推荐指数
1
解决办法
5222
查看次数

openapi中如何定义对象中的字段是唯一的?

我有这个 api 文档是用 OpenAPI 3.0.3 编写的

openapi: 3.0.3
info:
  version: '1.0'
  title: 'MyTitle'
  description: Specification for Bear Store

servers:
  - url: https://development.example.com/v1
    description: Development Server

paths:
  '/v1/bears':
    get:
      description: Requests a lists all the bears
      summary: List of bears request
      responses:
        '200':
          description: List of Bears
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    name:
                      type: string

Run Code Online (Sandbox Code Playgroud)

我有一个 Bear 对象,它具有id, 和name属性。我想定义 id 字段是一个唯一字段。我如何在 OpenAPI 3 中定义它?

api swagger openapi

2
推荐指数
1
解决办法
4366
查看次数

通过 Terraform 部署基于 OpenAPI 的 API 网关?

我收到了 SwaggerHub 上托管的 OpenAPI 3.0.1 定义的链接,并被告知要部署它。在 Terraform 方面,我看到太多让我困惑的资源,我不确定该使用哪一个。通过 Terraform 部署已在 OpenAPI 定义中配置的 API 网关的最直接方法是什么?是否有资源可以让我向 API 网关提供 OpenAPI 定义 URL,或者我必须将实际的 JSON 复制粘贴到某处?

terraform aws-api-gateway openapi

2
推荐指数
1
解决办法
3025
查看次数

SwaggerUI 3 不尊重 OpenAPI 3 规范中查询数组参数的“explode: false”

我在 OpenAPI 3 规范中定义了一个查询参数,如下所示:

      parameters:
      - in: query
        name: categories
        schema:
          type: array
          items:
            type: string
            enum:
            - category1
            - category2
          style: form
          explode: false
Run Code Online (Sandbox Code Playgroud)

期望的是,如果我使用“尝试一下!” 功能并选择类别 1 和类别 2,形成的 URL 应包含: ?categories=category1,category2

然而,SwaggerUI 却形成了 URL 的这一部分,如下所示: ?categories=category1&categories=category2

因此,SwaggerUI 似乎将该参数视为explode设置为true

我怎样才能让 SwaggerUI 使用逗号分隔的公式,因为这是服务器所期望的?

swagger-ui openapi

2
推荐指数
1
解决办法
2194
查看次数

设置swagger API版本的动态版本

我试图在下面的注释中使版本动态化。

@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "Test APIs", version = "${project.version}", description = "Testing APIs"))
public class DemoApplication {

}
Run Code Online (Sandbox Code Playgroud)

在这里,我想让版本动态化,这样它将从 pom.xml 文件中获取值。

我需要为此进行任何配置吗?TIA。

annotations swagger swagger-ui spring-boot openapi

2
推荐指数
1
解决办法
3775
查看次数

如何在.Net Core中生成OpenApi Client SDK项目

我们的客户为我们提供了他们所有 API 端点的 swagger 链接。我们有一个使用 VS 2022 和 .Net 6 的 .Net Core 项目。现在我们想要为相同的 .Net Core 解决方案生成一个 OpenAPI 客户端项目,以便我们通过 OpenAPI 项目调用客户端的 API 端点。

我遵循的步骤是:

  • 我从客户端下载了 swagger json 文件。
  • 我遵循了这个文档

正如该文档中提到的,首先,我使用此命令安装了 Open API

npm install @openapitools/openapi-generator-cli -g

然后,当我执行 OpenAPI Generator CLI 使用此命令生成 SDK 时,我收到错误“Java”未被识别为内部或外部命令

openapi-generator generate -i swagger.json -g csharp-netcore -o Api.Client.Sdk --additional-properties packageName=Api.Client.Sdk

c# openapi webapi

2
推荐指数
1
解决办法
6947
查看次数

无法在 Swagger-ui-express npm 的授权标头中发送承载令牌

我正在运行express/node 应用程序并使用"swagger-ui-express": "^4.5.0",. 我已经设置了一个要求,即需要将jsonwebtoken不记名令牌与所有请求一起发送到我的 api 中的任何端点。

我已经加载了 swagger 文档并正常工作,但现在当试图弄清楚如何将其传递Authorization: Bearer <token>到我的所有端点时,它似乎不起作用。我可以添加securitySchemes+ 子选项,并在我的 swagger 文档中获得绿色Authorize按钮,但是当我输入不记名令牌并发送请求时,加载旋转器会继续旋转并且从不发送请求。我morgan在我的应用程序中设置了日志记录,因此我可以看到对我的端点的请求永远不会被发送或记录。

如何向从 swagger UI 发送的请求发送不记名令牌?

在 app.js 中,我有一条可以在 localhost 中正确加载的路由

// Single entry point for swagger docs
router.use(
  '/swaggerDocs',
  swaggerDoc.serve,
  swaggerDoc.setup(swaggerDocumentation),
);
Run Code Online (Sandbox Code Playgroud)

swaggerDocumentation来自上面的代码片段(配置文件)。

import getCountryRegions from './getCountryRegions.doc.js';

export default {
  openapi: '3.0.3',
  info: {
    title: 'Node/express rest api app',
    version: '0.0.1',
  },
  components: {
    securitySchemes: {
      bearerAuth: {
        type: 'http',
        in: 'header', …
Run Code Online (Sandbox Code Playgroud)

node.js swagger swagger-ui openapi

2
推荐指数
1
解决办法
4733
查看次数