我有一个使用 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/