[英]How to define an interface method to accept a class or any of its subclasses in Java?
[英]is there any way to define httpheaders in single class,interface or annotation in java?
有什么辦法可以在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
}
根據@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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.