Java 如何使SpringFox Swagger将字符串参数渲染为另一种模型类型?

Java 如何使SpringFox Swagger将字符串参数渲染为另一种模型类型?,java,swagger,springfox,Java,Swagger,Springfox,如何将Swagger文档作为字符串资源参数作为完整的类类型 即,我有以下资源声明: @PatchMapping(path="/{id}") public ApiResponse<MyObject> patch(@PathVariable String id, @RequestBody String myObjText) { @PatchMapping(path=“/{id}”) 公共ApiResponse修补程序(@PathVariable String id、@RequestBo

如何将Swagger文档作为字符串资源参数作为完整的类类型

即,我有以下资源声明:

@PatchMapping(path="/{id}")
public ApiResponse<MyObject> patch(@PathVariable String id, @RequestBody String myObjText) {
@PatchMapping(path=“/{id}”)
公共ApiResponse修补程序(@PathVariable String id、@RequestBody String myObjText){
我希望
myobjecttext
被记录为具有类型为
MyObject
的模型,同时仍然能够在方法体中获取原始JSON文本(这是因为我以后想通过Jackson
objectMapper
调用
ReaderForUpdate()

对于
@RequestBody
参数,
@ApiParam
似乎被忽略,并且不允许有任何
@ApiModel*
注释


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

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

@ApiImplicitParams({
        @ApiImplicitParam(name = "My obj text",
        value = "myObjText", required = true,
        dataType = "com.example.MyObject", paramType = "body")
})
就像在这里实现的一样:

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

1) 添加了
@ImplicitParams
(类型名称不符合包名称)

2) 注册的隐式模型类型(特别是当响应类型为
ResponseEntity(Void.class)


我认为这是不可能的。如果请求主体是字符串类型的任何字符串(不仅仅是json字符串)API将接受。Spring有一种自定义默认ObjectMapper的方法,您可以尝试。请参阅这里的@Archit,我不担心验证或进一步的数据处理,我只希望文档比提供有关参数格式的通用
字符串
类型更具描述性OK。那么您可能正在处理字符串在控制器代码中显式验证,否则客户端可以使用任何随机负载调用API。@watery我正在尝试实现同样的效果。您找到解决方案了吗?@Marc我最终使用了-请参阅GitHub的进一步问题。这不起作用(我想知道这是否是Springfox的问题)。当
数据类型
参数具有非软件包限定值时,这似乎有效,即
dataType=“MyObject”
(请参阅SpringFox)。可能我只使用Jersey对其进行了测试。
@ApiImplicitParams({
    @ApiImplicitParam(name = "requestBody", required = true,
        dataType = "MyObject", paramType = "body")
})
@Configuration
public class SwaggerConfiguration {

    @Autowired
    private TypeResolver typeResolver;

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
            .additionalModels(typeResolver.resolve(MyObject.class));
    }

}