我想使用@Request herader 讀取標題。下面是我的控制器類。我使用地圖來讀取我的標題,現在我想檢查我的標題是否包含這三個 id 中的任何一個
外部ID或客戶ID或用戶ID 商家ID
這是我的控制器類,我使用 contains 方法檢查標頭是否包含特定鍵,但它回傳 null,與我使用 get 方法列印特定鍵的值時相同。
@RestController
public class TransactionController {
@Autowired
TransactoinService transactionService;
@PostMapping
TransactionResponse createTransaction(@RequestBody TransactionRequest transactionRequest){
return transactionService.createTransaction(transactionRequest);
}
@GetMapping(value="/transactionDetails")
TransactionResponse getTransactionDetailsByExternalId(@RequestHeader Map<String,String> header){
System.out.println(header);
return transactionService.getTransactionDetailsByExternalId(header.get("externalId"));
}
}
當我在郵遞員中運行上面的代碼時,這個 getmapping 沒有將值傳遞給函式,即使當我嘗試列印標題時,它會將 externalId 的值列印到標題中。 這是上面代碼的輸出
{externalid=b5eccae2-b6c1-4d17-987e-1849542df2a3, user-agent=PostmanRuntime/7.29.2, accept=*/*, cache-control=no-cache, postman-token=07f367c4-e875-40ef-ab9b-5fd6d783d307, host=localhost:8080, accept-encoding=gzip, deflate, br, connection=keep-alive}
Hibernate: SELECT * FROM transaction_entity WHERE transaction_entity.external_Id = ?

我之前也遇到過上述問題,但后來我嘗試使用 httpservletRequest 進行 getmapping,然后我發現我的其他代碼沒有問題,因為一切正常。現在我再次嘗試使用reqestheader 實作getmapping,因為@request 標頭在嘗試讀取標頭時很好用。
uj5u.com熱心網友回復:
要讀取標題值,@RequesHeader您必須提供標題名稱作為注釋值。詳情可以看這里
@GetMapping(value="/transactionDetails")
TransactionResponse getTransactionDetailsByExternalId(@RequestHeader("externalid") String externalid){
System.out.println(externalid);
return transactionService.getTransactionDetailsByExternalId(externalid);
}
或者您可以作為方法引數傳遞HttpEntity并從中讀取標頭值。更多細節可以在這里找到
@GetMapping(value="/transactionDetails")
TransactionResponse getTransactionDetailsByExternalId(HttpEntity<byte[]> requestEntity){
System.out.println(requestEntity.getHeaders());
return transactionService.getTransactionDetailsByExternalId(requestEntity.getHeaders().getFirst("externalId"));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513992.html
標籤:爪哇弹簧靴休息
