![](/img/trans.png)
[英]"Missing request header "exception in Spring boot controller on production not on local server
[英]How should 'missing' request headers be handled by a Spring Boot Controller?
我正在編寫一個Spring Boot應用程序。 我的控制器有2個自定義請求標頭。 我執行了幾次測試,只是發現標題不存在時我的應用程序返回了“ 404”。
但是,我期望這會導致“ 400”錯誤?
誰能解釋為什么會這樣? 我應該如何正確處理呢? 正如告訴服務的使用者,標頭丟失了嗎?
@RestController("fundsConfirmationController")
@RequestMapping(
value="/accounts/{accountId}/funds-confirmations",
headers = {"X-CAF-MSGID", "X-AccessToken"}
)
public class FundsConfirmationController implements FundsConfirmationControllerI{
private FundsConfirmationServiceI fundsConfirmationService;
@Autowired
public FundsConfirmationController(FundsConfirmationServiceI fundsConfirmationService){
this.fundsConfirmationService = fundsConfirmationService;
}
@GetMapping(
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<?> fundsConfirmation(@RequestHeader(value="X-CAF-MSGID") String messageId,
@RequestHeader(value="X-AccessToken") String accessToken,
FundsConfirmationRequest requestParams) { ... }
2個解決方案可以相同。
首先使用@RequestHeader
和required
false
@RequestMapping(value = "/{blabla}", method = RequestMethod.POST)
public void post(@RequestHeader(value="X-CAF-MSGID", required=false) String X-CAF-MSGID) {
if(X-CAF-MSGID == null) {
// Your JSON Error Handling
} else {
// Your Processing
}
}
第二個使用HttpServletRequest
而不是@RequestHeader
@RequestMapping(value = "/{blabla}", method = RequestMethod.POST)
public void post(HttpServletRequest request) {
String X-CAF-MSGID = request.getHeader("X-CAF-MSGID");
if(X-CAF-MSGID == null) {
// Your JSON Error Handling
} else {
// Your Processing
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.