Java Swagger 不生成端点响应类型为 List<T> 的服务

标签 java spring-boot swagger swagger-ui

我正在尝试将 swagger 与 java 一起使用。 使用 NSwag studio,我可以生成所有端点,除了返回对象列表的端点之外。 这是我在 Controller 中的操作:

@ApiOperation(value = "getAll", nickname = "getAll", responseContainer = "List", response = DiakEntity.class)
@GetMapping("/api/diakok")
@ResponseBody
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_CLIENT')")
public List<DiakEntity> GetDiakok() throws Exception
{
    ServiceObjectResponse<List<DiakEntity>> request = _diakService.getAll();

    if(!request.getIsSuccess())
    {
        throw new Exception(request.getMessage());
    }
    return request.getObject();
}

我正在使用 swagger-annotations 1.5.23、springfox-swagger-ui 2.9.2、springfox-swagger2 2.9.2。 如果我从 postman 测试它的工作原理。

也尝试过这样的:

@ApiOperation(value = "getAll", nickname = "getAll")
    @ApiResponse(code = 200, responseContainer="List", response=DiakEntity.class, message = "Gets all diak objects")
    @GetMapping("/api/diakok")
    @ResponseBody
    @PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_CLIENT')")
    public ResponseEntity<List<DiakEntity>> GetDiakok() throws Exception
    {
        ServiceObjectResponse<List<DiakEntity>> request = _diakService.getAll();

        if(!request.getIsSuccess())
        {
            throw new Exception(request.getMessage());
        }

        return new ResponseEntity<>(request.getObject(), HttpStatus.OK);
    }

谢谢

最佳答案

请尝试使用以下 swagger 注释。

@ApiOperation(value = "getAll", nickname = "getAll")
@ApiResponse(code = 200, responseContainer="List", response=DiakEntity.class)

关于Java Swagger 不生成端点响应类型为 List<T> 的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59237890/

相关文章:

java - 如何使用 sql 创建嵌套选择?

java - R 无法解析为变量?

java - JPA 存储库上的 Spring 重试

java - 将 Angular 嵌入到 Spring 应用程序中并在运行 ngserve 时访问 Spring Controller

swagger - 将 Micronaut OpenAPI/Swagger 生成器与 grails 4 结合使用

java - 如何将属性值注入(inject)使用注解配置的Spring Bean中?

java - 了解Ccleaner的代码流程

java - 更改 json 对象值

yaml - 如何在 Swagger API 中描述嵌套对象?

django - 无法让 Django REST Swagger 与路由器一起使用