spring-boot - springdoc Swagger UI 不发布 JSON

标签 spring-boot swagger springdoc-openapi-ui

我有一个使用 springdoc-openapi-ui 支持 Swagger 的 Spring Boot REST 应用程序。对于我的生活,我无法让生成的 Swagger UI 实际发布 JSON。相反,前端将 args 作为请求参数传递。如何让 Swagger UI 实际提交 JSON?

@Data
public static class SampleData {
    private String info;        
}
    
@PostMapping(value = "/test", consumes = "application/json")
public void postData(@ParameterObject @RequestBody SampleData data) {
    // do something
}

在 Swagger UI 中单击“试用”和“执行”后,请求失败并显示:

{
  "status": 415,
  "error": "Unsupported Media Type",
  ...
}

因为 UI 试图 POST 这个:

http://localhost:8080/myapp/v1/test?info=test

生成的 curl 命令也不正确(不是 POSTing JSON):

curl -X 'POST' \
  'http://localhost:8080/myapp/v1/test?info=test' \
  -H 'accept: */*' \
  -d ''

请注意,如果我删除 @ParameterObject 注释,Swagger UI 将发布 JSON。但是,UI 不会呈现用户友好的形式(在完整示例中包含该 bean 中字段的文档注释)

我错过了什么?

Spring Boot:2.6.3,springdoc-openapi-ui:1.6.5

最佳答案

springdoc github 的解决方案是删除@ParameterObject 注释并切换到 UI 中的“Schema” View 以查看 POJO 字段的文档。不完全是我希望的解决方案,但它有效。 github.com/springdoc/springdoc-openapi/issues/1482

关于spring-boot - springdoc Swagger UI 不发布 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70898701/

相关文章:

ruby-on-rails-4 - 如何在 Swagger-UI 中对路由进行分组

c# - ASP.Net Web API Swashbuckle 如何忽略 HttpRequestMessage

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

spring-boot - 如何使用 swagger OpenAPI 注释将描述设置为字段

java - Log4J2 属性替换 - 使用外部属性文件

java - 将现有的 WAR 添加到嵌入式 tomcat

spring-boot - 如何使用MockMVC和standaloneSetup并且没有WebApplicationContext测试Thymeleaf?

java - 一起使用 Spring Boot、QueryDSL 和 Springfox Swagger - Guava 版本不匹配

springdoc - 我已经使用 springdoc 安装了 OpenAPI 3,但 URL 很奇怪。我可以将其更改为预期值吗?

java - 如何忽略像 "car":{}, 这样的空 json 对象,这些对象在使用 jackson 反序列化后会导致空的 pojo