Как получить заголовки unspe c с помощью генератора openapi (пружина) - PullRequest
0 голосов
/ 21 апреля 2020

Для наших REST API у нас есть определенные заголовки HTTP-запросов, которые устанавливаются компонентами инфраструктуры и не должны публиковаться для потребителей в спецификации OpenAPI c.

В коде реализации на основе Spring Web. что мы строим (реализуя сгенерированные интерфейсы openapi-генератора), как правильно получить что-то подобное из HTTP-запроса? Например, заголовок, который не указан в интерфейсе.

Я не вижу никаких опций в самом генераторе openapi, чтобы добавить HttpServletRequest в качестве параметра к сгенерированным методам. Я надеюсь, что есть более общий c способ справиться с этим в Spring / Spring Web.

1 Ответ

0 голосов
/ 21 апреля 2020

Хорошо, так что это получается довольно просто и элегантно, используя сгенерированный Spring-код open-api-генератора, по крайней мере в шаблоне «делегата», который я использую.

Класс Delegate создает Метод getRequest (), который вы просто переопределяете следующим образом:

private final NativeWebRequest nativeWebRequest;

@Override
public Optional<NativeWebRequest> getRequest() {
    return Optional.ofNullable(nativeWebRequest);
}

Возможно, вам придется добавить NativeWebRequest в ваш конструктор или сделать его @Autowired. (Мы используем lombok для генерации конструктора.)

Тогда в вашем методе API вы можете просто сделать что-то вроде:

String headerValue = getRequest().get().getHeader("my-header-name");
...