【发布时间】:2018-12-08 11:36:01
【问题描述】:
如何让 Swagger 将 String 资源参数记录为完整的类类型?
即我有这个资源声明:
@PatchMapping(path="/{id}")
public ApiResponse<MyObject> patch(@PathVariable String id, @RequestBody String myObjText) {
我希望 myObjText 被记录为具有 MyObject 类型的模型,同时仍然能够在方法主体中获取原始 JSON 文本(这是因为我稍后想通过 Jackson @987654327 调用 readerForUpdating() @)。
@ApiParam 似乎被 @RequestBody 参数忽略,并且那里不允许使用任何 @ApiModel* 注释。
我正在使用springfox,因为这些是 Spring Rest 资源。
【问题讨论】:
-
我认为这不能完成。如果请求正文是字符串类型,API 将接受任何字符串(不仅仅是 json 字符串)。 Spring 有一种自定义默认 ObjectMapper 的方法,您可以尝试。参考这里docs.spring.io/spring-boot/docs/current/reference/html/…
-
@Archit,我不担心验证或进一步的数据处理,我只是希望 documentation 比提供关于我的参数的通用
String类型更具描述性格式 -
好的。那么也许您正在控制器代码中显式处理字符串验证,否则客户端可以使用任何随机有效负载调用 API。
-
@watery 我正在努力实现同样的目标。你找到解决办法了吗?
-
@Marc 我最终使用了Alexander Terekhov's answer - 请参阅更多 GitHub 问题。