Определение спецификации OpenAPI для конечной точки с общим теломJAVA

Программисты JAVA общаются здесь
Anonymous
Определение спецификации OpenAPI для конечной точки с общим телом

Сообщение Anonymous »

Мы определяем наши API с помощью OpenApi 3. Мы используем Spring-Boot на серверной стороне.
Нам необходимо определить конечную точку для получения уведомлений от произвольных третьих сторон. У нас будет параметр URL-адреса для типа, который мы будем использовать, чтобы найти правильный плагин для его обработки, но мне нужна одна общая конечная точка.
Для JSON и XML я думаю, я не смогу добиться большего, чем type: object, но для application/x-www-form-urlencoded я чувствую, что в конечном итоге у меня должно получиться тело запроса Map (или даже Map ). но я не могу понять, как описать это в спецификации OAS. возможно ли это?
Я теперь понял, как это сделать, начиная с Java. Мне пришлось определить его как параметр запроса, а не как тело запроса, но тогда я объединил параметры GET и POST в одну карту, а еще одну — для заголовков.
Я определяю свой API следующим образом (мы используем шаблон делегата)

Код: Выделить всё

  /**
* POST /foo/{adapterCode} : Testing.
*
* @param adapterCode  (required)
* @param body  (required)
* @return OK (status code 200)
*/
@Operation(
operationId = "foo",
summary = "Testing",
tags = { "Foo" },
responses = {
@ApiResponse(responseCode = "200", description = "OK")
}
)
@RequestMapping(
method = RequestMethod.POST,
value = "/foo/{adapterCode}",
consumes = { MediaType.APPLICATION_FORM_URLENCODED_VALUE },
produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE, MediaType.TEXT_PLAIN_VALUE }
)
default CompletableFuture foo(
@Parameter(name = "adapterCode", description = "", required = true, in = ParameterIn.PATH)
@PathVariable("adapterCode") final String adapterCode,
@Parameter(name = "body", description = "", required = true) @Valid
@RequestParam final HashMap body,
@Parameter(name = "headers", description = "", required = true, in = ParameterIn.HEADER) @Valid
@RequestHeader final HashMap headers) {
return getDelegate().foo(adapterCode, body, headers);
}
(Вероятно, это должен быть MultiValueMap, а не просто HashMap, технически)
Мне также пришлось добавить класс конфигурации в мой проект

Код: Выделить всё

@Configuration
public class FormDataConverter implements WebMvcConfigurer {

@Override
public void configureMessageConverters(final List

Вернуться в «JAVA»