springdoc 1.5.3(最新版本)
swaggerui 3.41.0(最新版本)
swagger 的用户界面显示了很好的领域 @RequestParam
.
我有一个后端点,所以我用 @RequestBody
.
我可以发送一个json并解析到我的body对象中。到现在为止,一直都还不错。
但swaggerui只显示了一个textarea,我应该把整个json放在这里。不太方便。
我希望swaggerui为请求类的每个属性显示单独的字段;没有yamls,只有注解。不过,如果没有其他选择,yaml解决方案是可以的。
我找到的最接近的是 @ParameterObject
支持post,讨论如下:
class MyParam (
val a: String,
val b: SomeEnum,
@field:Parameter(required = false)
val someId: String?,
)
@PostMapping("/...", consumes = [ MediaType.APPLICATION_JSON_VALUE ])
fun addMyEntity(
@ParameterObject param: MyParam
)
但是,这似乎是从查询参数构建对象。
在斯普林福克斯,曾经有 @ApiModel
以及 @ApiModelParameter
,我想会这样。springdoc迁移页面建议用 @Schema
,但我不知道怎么做。
有没有什么东西可以让swagger ui以同样的方式显示类中的字段,但从中组装一个json体?spring还会从身体里解析它吗?
可能是这样的:
fun addInsisPaymentRequest(
@BodyObject param: MyParam
)
1条答案
按热度按时间smtd7mpg1#
我怀疑你提出的解决办法的可行性。原因是,post/put请求接受一个请求体,正如您所知,它可以接受任何有效的负载。
负载的范围可以从基本类型到应用程序使用的自定义对象。此外,数据类型不仅限于json,还可以是xml、hal等。
另外,值得注意的一点是,任何有效的json/xml都可以有递归对象。考虑下面的例子。
现在出现的问题是,对于所有的查询参数,可以有一个类似于我们的表示法,但是如何表示它们应该出现的顺序呢?
至于
@ParameterObject
它们大多是原始类型。尽管将它们作为复杂类型并非不可能,但我认为我们中的很多人并不经常这样做。