我有 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) 我在这里看到了类似的答案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)
但这行不通。有什么想法/建议吗?
我想将 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)的更新更容易阅读、实施和重用,这就是我问这个问题的原因。再次强调,任何指导或帮助将不胜感激。
我正在使用 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”?
我有这个 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 中定义它?
我收到了 SwaggerHub 上托管的 OpenAPI 3.0.1 定义的链接,并被告知要部署它。在 Terraform 方面,我看到太多让我困惑的资源,我不确定该使用哪一个。通过 Terraform 部署已在 OpenAPI 定义中配置的 API 网关的最直接方法是什么?是否有资源可以让我向 API 网关提供 OpenAPI 定义 URL,或者我必须将实际的 JSON 复制粘贴到某处?
我在 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 使用逗号分隔的公式,因为这是服务器所期望的?
我试图在下面的注释中使版本动态化。
@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。
我们的客户为我们提供了他们所有 API 端点的 swagger 链接。我们有一个使用 VS 2022 和 .Net 6 的 .Net Core 项目。现在我们想要为相同的 .Net Core 解决方案生成一个 OpenAPI 客户端项目,以便我们通过 OpenAPI 项目调用客户端的 API 端点。
我遵循的步骤是:
正如该文档中提到的,首先,我使用此命令安装了 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
我正在运行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) openapi ×10
swagger ×5
swagger-ui ×3
java ×2
node.js ×2
spring-boot ×2
annotations ×1
api ×1
c# ×1
gradle ×1
rest ×1
spring ×1
terraform ×1
typescript ×1
webapi ×1