gpt4 book ai didi

spring-boot - springdoc-openapi-ui 将 header 参数添加到生成的 swagger

转载 作者:行者123 更新时间:2023-12-04 00:54:29 35 4
gpt4 key购买 nike

在我的 spring boot 应用程序中,我有端点,这些端点由 springboot 应用程序中的 header 参数验证。
当前 swagger json 如下所示:

// part of current swagger.json
...
"paths": {
"/path1/{param1}": {
"get": {
"parameters": [
{
"name": "param1",
"in": "path",
"type": "string",
"required": true
}
]
}
}
}
...
我想使用 springdoc-openapi-ui 添加缺少的参数配置,所以它看起来像这样:
// I want to achieve swagger.json which contains additional parameter
...
"paths": {
"/path1/{param1}": {
"get": {
"parameters": [
{
"name": "param1",
"in": "path",
"type": "string",
"required": true
},
{
"name": "missingParam",
"in": "header",
"type": "string",
"required": true
}
]
}
}
}
...
我尝试通过添加到我的 appplication.yml 来实现这一点。来自 Common Parameters for Various Paths 的解决方案
#application.yml
...
components:
parameters:
hiddenParam:
in: header
name: missingParam
required: true
schema:
type: string
paths:
/path1:
get:
parameters:
- $ref: '#/components/parameters/hiddenParam'
但它不起作用。
我的问题:
  • 有没有办法使用应用程序配置修改我的 Swagger 结果?
  • 我想定义参数模板并将其添加到所有端点,我该如何实现?
  • 最佳答案

    最后我决定使用不同的方法。
    我定义了 security scheme并在全局范围内将其应用为 authorization header .

        @Bean
    public OpenAPI customOpenAPI() {
    return new OpenAPI()
    .info(new Info().title("My App").version("1.0.0"))
    // Components section defines Security Scheme "mySecretHeader"
    .components(new Components()
    .addSecuritySchemes("mySecretHeader", new SecurityScheme()
    .type(SecurityScheme.Type.APIKEY)
    .in(SecurityScheme.In.HEADER)
    .name("missingParam")))
    // AddSecurityItem section applies created scheme globally
    .addSecurityItem(new SecurityRequirement().addList("mySecretHeader"));
    }
    现在 swagger-ui.html允许根据测试人员的要求使用或不使用授权头来测试端点。
    enter image description here
    干杯!

    关于spring-boot - springdoc-openapi-ui 将 header 参数添加到生成的 swagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63671676/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com