有什么方法可以在Java的单个类中定义httpheaders?这类似于为我的应用程序中使用的用户定义的httpHeaders创建包装器类。而不是在我的控制器方法中定义所有标头。
@PostMapping
public <ResponseEntity<Book>> getBooks(
@ModelAttribute("requestContext") RequestContext context, @PathVariable("bookId") String bookId,
@RequestHeader(value="x-institute-id") String instituteId,
@RequestHeader(value="x-customer-last-logged-time") String xCustomerLastLoggedTime,
@RequestHeader(value="x-customer-ip-address") String xCustomerIpAddress,
@RequestHeader(value="x-interaction-id", required=false) String xInteractionId){
---implementation
}
因此它可以是界面或注释。喜欢:
public class MyApplicationHeaders{
@RequestHeader(value="x-institute-id") String instituteId,
@RequestHeader(value="x-customer-last-logged-time") String xCustomerLastLoggedTime,
@RequestHeader(value="x-customer-ip-address") String xCustomerIpAddress,
@RequestHeader(value="x-interaction-id", required=false) String xInteractionId)
}
以便我们可以将其用作:
@PostMapping
public <ResponseEntity<Book>> getBooks(
@ModelAttribute("requestContext") RequestContext context, @PathVariable("bookId") String bookId, @MyApplicationHeaders appHeaders{
---implementation
}
答案 0 :(得分:0)
根据@RequestHeader
的文档
如果方法参数为
Map<String, String>
,MultiValueMap<String, String>
或HttpHeaders
,则将使用所有标头名称和值填充映射。
这意味着您可以使用Map
或HttpHeaders
作为参数类型来保存多个标头值。对于您而言,Map
适用,因为您正在处理非标准标头:
@PostMapping
public ResponseEntity<Book> getBooks(
@ModelAttribute("requestContext") RequestContext requestContext,
@PathVariable("bookId") String bookId,
@HttpHeaders Map<String, String> appHeaders) {
String instituteId = appHeaders.get("x-institute-id");
// do something else
}