对于我们的REST API,我们有某些HTTP请求标头,这些标头将由基础结构组件设置,并且不应在OpenAPI规范中发布给使用者。
在我们构建(实现openapi-generator的生成接口)的基于Spring Web的实现代码中,从HTTP请求检索类似内容的正确方法是什么?例如,在接口上未指定的标头。
我在openapi-generator本身中看不到任何将HttpServletRequest作为参数添加到生成的方法的选项。我希望在Spring / Spring Web中有一种更通用的方法来处理它。
好吧,使用open-api-generator生成的Spring代码,至少在我正在使用的“委托”模式下,这看起来非常简单而优雅。
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");