标签: springdoc-openui

springdoc-openapi-ui 如何将请求设置为HTTPS

当我发布时,我会使用HTTPS请求而不是HTTP,但是swagger原始URL仍然是HTTP,我不知道如何设置,并且原始springdoc-openapi-ui配置中没有服务器的文档

https://springdoc.org/index.html#properties 在此输入图像描述

springdoc springdoc-openui

20
推荐指数
2
解决办法
2万
查看次数

springdoc-openapi-ui + swagger 不理解 @PathVariable required = false 标志

我使用这个库来生成文档:

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

我有这个控制器:

@RestController
public class TestController {

    @GetMapping("/test{hz}")
    public String test(@PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个文档:

在此输入图像描述

为什么required = false不起作用?

我试过这个:

@RestController
public class TestController {

    @GetMapping("/test{hz}")
    public String test(
            @Parameter(description = "foo", required = false)
            @PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}
Run Code Online (Sandbox Code Playgroud)

也不起作用

编辑:(@Helen 评论的答案)-我当然知道这一点:

@RestController
public class TestController {

    @GetMapping(value = {"/test", "/test{hz}"})
    public String test(
            @Parameter(description …
Run Code Online (Sandbox Code Playgroud)

spring swagger spring-restcontroller springdoc springdoc-openui

8
推荐指数
1
解决办法
5679
查看次数

SpringDoc - 如何以编程方式添加模式

我正在使用 SpringDoc 并尝试以编程方式向 OpenApi 添加架构,但没有成功。

    @Bean
public OpenAPI customOpenAPI() {
     Schema mySchema = new Schema<Object>();
     mySchema
     .type("object")
     .$ref("#/components/schemas/MySchema")
     .name("MySchema")
     .addProperties("testStr", new StringSchema());

      return new OpenAPI()
            .servers(servers)
            .info(new Info().title(title).version(version).description(description))
            .components(new Components()
                    .addSchemas("MySchema" , mySchema)
            )
            .tags(tags);
}
Run Code Online (Sandbox Code Playgroud)

mySchema 的描述未添加到我在生成的 YAML 文件中看到的架构列表中,如果我尝试引用它:

apiResponses.entrySet().forEach(response -> response.getValue().addHeaderObject("XxX", 
                  new Header().$ref("#/components/schemas/MySchema")));
Run Code Online (Sandbox Code Playgroud)

swagger UI 中显示以下错误:

paths./XX/v1/test/status/{entry}.get.responses.404.headers.XxX.$ref 处的解析器错误 无法解析引用:无法解析指针:/components/schemas/MySchema

请问您能帮我理解一下吗?

编辑:我正在使用版本1.3.9

schema spring-boot springdoc springdoc-openui

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

如何控制 Springdoc OpenAPI 3.0 中的标签顺序?

我正在从 Springfox 3.0 切换到 OpenAPI 3.0 + Springdoc-openapi。
在 Springfox 中,标签顺序是按字母顺序排列的,但在 Springdoc 的 Swagger UI 中,顺序似乎是随机的。

如何控制 UI 上的标签顺序?我更喜欢自己选择的顺序,但也可以按标签名称的字母顺序排序。

@Tag(name = MY_CONTROLLER_TAG_NAME, description = MY_CONTROLLER_TAG_DESC)
public class MyController {
Run Code Online (Sandbox Code Playgroud)

所需订单:

  • 分页端点
  • 用户访问
  • 标记
  • 标记 - 管理员
  • 用户管理
  • 用户管理 - 管理员

实际订单:

  • 用户访问
  • 标记
  • 分页端点
  • 标记 - 管理员
  • 用户管理 - 管理员
  • 用户管理

POM 依赖关系:

        <springdoc-openapi.version>1.6.4</springdoc-openapi.version>
...
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>${springdoc-openapi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-security</artifactId>
            <version>${springdoc-openapi.version}</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

应用程序.yml:

springdoc:
  show-actuator: ${SWAGGER_ENABLED:true}
  swagger-ui:
    doc-expansion: none
  api-docs:
    enabled: ${SWAGGER_ENABLED:true}
  model-converters:
    pageable-converter:
      enabled: true
Run Code Online (Sandbox Code Playgroud)

java openapi springdoc-openui springdoc-openapi-ui

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

如何在 OpenAPI 3.x 中将 API 标记为未使用

当库尚未准备好供打算使用 API 的其他微服务使用时,如何在 OpenAPI 3.x 中将 API 标记为未使用

注意:目前,我们构建了很多 API,它们处于不同的开发阶段。有没有办法对此进行注释,以便其他开发人员知道有一些 API 仍在进行中

swagger openapi springdoc-openui

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

提供的定义在渲染 openapi 时未指定有效的版本字段

我将 OpenAPI 与我的项目集成,当我访问 url: 时http://127.0.0.1:11014/swagger-ui/index.html,显示如下错误:

Unable to render this definition
The provided definition does not specify a valid version field.

Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0).

 
Run Code Online (Sandbox Code Playgroud)

这是 OpenAPI 配置:

package misc.config.openapi;

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * https://springdoc.org/
 * https://github.com/springdoc/springdoc-openapi
 */
@Configuration
public class OpenApiConfig {

    @Bean
    public GroupedOpenApi …
Run Code Online (Sandbox Code Playgroud)

java swagger spring-boot openapi springdoc-openui

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

如何附加抛出异常到 openapi-generator-maven-plugin 生成的其余端点

我正在使用 openapi-generator-maven-plugin 从 springboot 应用程序中的 yaml 文件生成 java 类。我想让所有端点抛出 CustomException。

如何配置插件来做到这一点?

这是 open-ui.yaml。我定义了返回 UserDto 列表的端点“users”。我希望该方法在签名中抛出异常。

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Test Api
  license:
    name: MIT
servers:
  - url: "https://{domain}/test/{basePath}"

paths:
  /users:
    get:
      summary: users
      operationId: getUsers
      tags:
        - users
      parameters:
        - name: limit
          in: query
          schema:
            type: integer

      responses:
        '200':
          description: A page of users
          content:
            application/v1+json; charset=utf-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDto'
  
Run Code Online (Sandbox Code Playgroud)

pom.xml

     <plugin>
            <groupId>org.openapitools</groupId>
            <artifactId>openapi-generator-maven-plugin</artifactId>
            <version>5.3.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <inputSpec>
                            ${project.basedir}/swagger/open-ui.yaml
                        </inputSpec>
            .... …
Run Code Online (Sandbox Code Playgroud)

maven-plugin spring-boot springdoc-openui

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

Spring 文档 - Open API 3 - 如何为正文设置默认值?

我使用Spring Boot + Spring Data Mongo + Spring REST + Spring HATEOAS来实现 REST 端点。

由于我们传递了超过 5 个查询参数(组织的专有设置,应该不传递),所以我想创建一个 EmployeeDto 类并在 Controller 处传递该类

@GetMapping(value = "/employees", produces = {MediaType.APPLICATION_JSON })
public ResponseEntity<PagedModel<EmployeeModel>> findEmployees(
        EmployeeDto dto,
        @Parameter(hidden=true) String sort,
        @Parameter(hidden=true) String order,
        @Parameter(hidden=true) Pageable pageRequest) {

    // Add needed logic 
    ......
    ......
    ......
    PagedModel<EmployeeModel> model = employeePagedAssembler.toModel(response, employeeAssembler);

    return new ResponseEntity<>(model, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

Swagger UI 显示如下 -

{
  "firstName": "string",
  "lastName": "string",
  "age": 0,
  "languageCd": "string",
  "isActive": "string",
  "email": "string",
  "regionCd": …
Run Code Online (Sandbox Code Playgroud)

spring springdoc springdoc-openui

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

springdoc-openapi 如何显示字符串数组作为响应

网络上没有关于如何使用 springdocs-openapi 库 (1.5.7) 获取以下输出的好示例。我希望获得以下输出:

[
  "A", "B", "C"
]
Run Code Online (Sandbox Code Playgroud)

这是基于所提供示例的代码。

@Operation(summary = "")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "OK",
                    content = {@Content(mediaType = "application/json",
                            array = @ArraySchema(schema = @Schema(implementation = String.class)),
                            examples = {@ExampleObject("A"), @ExampleObject("B"), @ExampleObject("C")}
                    )})
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出

[
  "string"
]
Run Code Online (Sandbox Code Playgroud)

上面列出的输出 ["A","B","C"] 如何通过 springdocs-openapi 库实现?

spring-boot springdoc springdoc-ui springdoc-openui springdoc-openapi-ui

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

在 IE 上为 SpringDoc Open API Swagger 迭代不可迭代实例的尝试无效

我最近将 swagger UI 从 更改SpringfoxSpringDoc OpenApi.

Swagger 在Chrome.

但在Internet Explore我得到以下错误。My IE version is 11

在此处输入图片说明

swagger-ui springdoc-openui springdoc-openapi-ui

3
推荐指数
1
解决办法
3449
查看次数

如何使用 springdoc openapi 在 swagger ui 上有条件地忽略 PathVariable

我正在从 springfox 2.9.0 迁移到 springdoc-openapi-ui 1.2.33。我需要根据条件在 swagger ui 上显示或隐藏 PathVariable 。我有两条路径如下

  1. 字符串名称标识符 = "{fisrtName}/{lastName}"

  2. 字符串名称标识符 = "{fisrtName}"

我根据要求传递上述 nameIdentifier 之一。

我对上述路径使用单个控制器,如下所示

@GetMapping(path = "persons/${nameIdentifier}/display")
public List<Person> getPersons(@PathVariable String fisrtName,
    @IgnoreLastName @PathVariable Optional<String> lastName) {

}

Run Code Online (Sandbox Code Playgroud)

在 springfox 中,我能够使用docket.ignoredParameterTypes(IgnoreLastName.class)如下所示的方法来实现它。

@Bean
public Docket api() {

    Docket docket;

    docket = new Docket(DocumentationType.SWAGGER_2).select()                
     .apis(RequestHandlerSelectors.basePackage("go.controller")).paths(PathSelectors.any()).build()
                .apiInfo(apiInfo());

        if (!nameIdentifier.contains("lastName")) {
            docket.ignoredParameterTypes(IgnoreLastName.class);
        }
        return docket;
    }
Run Code Online (Sandbox Code Playgroud)

但在 springdoc open api 中我无法实现相同的目标。同样感谢您的帮助。编码是用java完成的

谢谢

swagger swagger-ui spring-boot springdoc springdoc-openui

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

Springdoc-openapi - 有没有办法在 POST 请求中将默认值覆盖为 null 或空?

我正在使用 Spring Boot 和 Open API 3。当我发出 POST 请求时,通过 OAS2 Swagger,我看到所有字符串字段都以 Spring 的默认值出现,并且我没有看到通过 SpringDoc Open UI 删除它的方法也不通过代码。

{
  "firstName": "string",
  "lastName": "string",
  "age": 0,
  "email": "string",
  "address1": "string",
  "address2": "string",
  "address3": "string",
  "telephone" : "0",
  "department" : "string",
  .....
}
Run Code Online (Sandbox Code Playgroud)

这里消费者不愿意在发出请求时从字段中删除字符串。有什么办法吗

  1. 如果我们可以删除“string”作为值并将 null 或“”设置为默认值?
  2. 如果我们可以读取自定义对象并将找到“字符串”的所有值重置为 null,有什么办法吗?

springdoc springdoc-openui springdoc-openapi-ui

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