如何使用swagger open API 3.0的springdoc生成Map〈String,Object>类型的请求体?

qnakjoqk  于 2023-02-04  发布在  Spring
关注(0)|答案(2)|浏览(315)

对于下面的代码,只生成了参数id,它完全缺少“请求正文”部分。
我在https://swagger.io/docs/specification/data-models/dictionaries/的基础上添加了type="object"

public Item addProperties(
    @Parameter(description = "identifier of the item")
        @PathVariable("id") String id,
    @Parameter(
        description = "map of property names and values ", 
        content = @Content(
            schema = @Schema(
                type = "object",
                implementation = Map.class)))
        @RequestBody Map<String, Object> properties)
2hh7jdfx

2hh7jdfx1#

@RequestBody类型必须是一个类。所以Map的任何实现都可以工作(iIndieeHashMap)。

@RequestBody HashMap<String, Object> properties
y1aodyip

y1aodyip2#

Map类型似乎被Open API忽略了(* 尽管我没有关于此声明的可靠引用 *)。
参考:GitHub ~ Issues ~ #597 ~ Request Body for Maps not available in Swagger-UI
下面是上面GitHub问题中描述的解决方案。

static {
    SpringDocUtils.getConfig().removeRequestWrapperToIgnore(java.util.Map.class);
}

将静态块放入@SpringBootApplication类中,这样就可以解决问题。

@RequestBody Map<String, Object> properties // Should now generate correctly

另见

相关问题