如何使swagger将字符串参数呈现为另一种模型类型?

时间:2018-06-29 09:48:28

标签: java swagger springfox

如何使Swagger文档的String资源参数作为完整类类型?

即我有这个资源声明:

@PatchMapping(path="/{id}")
public ApiResponse<MyObject> patch(@PathVariable String id, @RequestBody String myObjText) {

我希望将myObjText记录为具有MyObject类型的模型,同时仍然能够在方法主体中获取原始JSON文本(这是因为我以后想调用{{1} },越过杰克逊readerForUpdating())。

objectMapper对于@ApiParam参数似乎被忽略,并且@RequestBody注释均不被允许。

我正在使用@ApiModel*,因为这些是Spring Rest资源。

2 个答案:

答案 0 :(得分:1)

尝试将字符串参数替换为@ApiParam(hidden = true)并添加 您的对象的新参数:

@ApiImplicitParams({
        @ApiImplicitParam(name = "My obj text",
        value = "myObjText", required = true,
        dataType = "com.example.MyObject", paramType = "body")
})

就像在这里实现的一样: How to document implicitly dto usage, when we use entity class as api param?

答案 1 :(得分:0)

在我的情况下,需要进行两项更改:

1)添加了darkness { position: absolute; z-index: 1; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, .5); } (类型名称不符合程序包名称)

@ImplicitParams

2)注册的隐式模型类型(尤其是当响应类型为@ApiImplicitParams({ @ApiImplicitParam(name = "requestBody", required = true, dataType = "MyObject", paramType = "body") })

时)
ResponseEntity(Void.class)