簡體   English   中英

有什么方法可以在Java中的單個類,接口或注釋中定義httpheaders?

[英]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則將使用所有標頭名稱和值填充映射。

這意味着您可以使用MapHttpHeaders作為參數類型來保存多個標頭值。 在您的情況下, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM