Как сгенерировать RequestBody типа Map <String, Object> с помощью springdoc для swagger open api 3.0?

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) 

Для приведенного выше кода только параметр idсоздается и полностью отсутствует requestBody. Я добавил type="object" на основе https://swagger.io/docs/specification/data-models/dictionaries/.

2 ответа

Тип RequestBody должен быть классом. Таким образом, любая реализация Map будет работать (например, HashMap)

@RequestBody HashMap<String, Object> properties

The Mapтип игнорируется Open API ( хотя у меня нет надежной ссылки на это утверждение ).

См.: GitHub ~ Проблемы ~ #597 ~ Тело запроса для карт, недоступных в пользовательском интерфейсе Swagger.

Вот обходной путь, описанный выше в проблеме GitHub.

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

Поместите этот статический блок внутрь вашего@SpringBootApplicationсорт. Это должно решить проблему.

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

Смотрите также

Другие вопросы по тегам