gpt4 book ai didi

java - Spring Boot Controller 应如何处理 'missing' 请求 header ?

转载 作者:行者123 更新时间:2023-12-01 19:41:48 24 4
gpt4 key购买 nike

我正在编写一个 Spring Boot 应用程序。我的 Controller 有 2 个自定义请求 header 。我执行了一些测试,结果发现当 header 不存在时,我的应用程序返回“404”。

但是我预计这会导致“400”错误?

谁能详细说明为什么会发生这种情况吗?以及我该如何正确处理呢?就像告诉服务的消费者 header 丢失一样?

@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 个解决方案可以实现相同的效果。

首先使用@RequestHeaderrequired 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
}
}

关于java - Spring Boot Controller 应如何处理 'missing' 请求 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com