我有 Swagger Codegen 生成的接口。它看起来像这样:
@PostMapping(value = "/ipc/conf", produces = {"application/json", "application/problem+json"}, consumes = {
"application/json"})
default ResponseEntity<CustomResponseEntity> ipcConfPost(
@ApiParam(value = "ID", required = true) @RequestHeader(value = "X-Request-ID", required = true) String xRequestID,
@ApiParam(value = "Value for identifying a single transaction across multiple services up to the backend.", required = true) @RequestHeader(value = "X-Correlation-ID", required = true) String xCorrelationID,
@ApiParam(value = "The payload to transmit", required = true) @Valid @RequestBody IPcData ipcConfData,
@ApiParam(value = "The business context is a general classification for a larger number of requests.") @RequestHeader(value = "X-Business-Context", required = false) String xBusinessContext) {
getRequest().ifPresent(request -> {
for (MediaType mediaType : MediaType.parseMediaTypes(request.getHeader("Accept"))) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"id\" : \"id\", \"error\" : \"error\" }";
ApiUtil.setExampleResponse(request, "application/json", exampleString);
break;
}
}
});
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
在实现中,我希望获得完整的请求标头列表(我需要在响应中包含其中一些),或者能够获取 API 中未列出的标头的值。问题是我无法更改端点的签名,因为它会在以后的版本中引起很大的麻烦。那么有什么方法可以实现这一点吗?
您的代码中已经有请求对象,因此您可以从中获取标头。即request.getHeaderNames()
然后循环通过它们。
之后,您可以将它们添加到响应中
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("key", "value");
ResponseEntity.ok().headers(responseHeaders).body("some body");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句