首页 >Java >java教程 >如何处理带有字符串返回类型的 Spring MVC @ResponseBody 方法中的 HTTP 400 错误?

如何处理带有字符串返回类型的 Spring MVC @ResponseBody 方法中的 HTTP 400 错误?

Patricia Arquette
Patricia Arquette原创
2024-10-28 02:30:01424浏览

How to Handle HTTP 400 Errors in Spring MVC @ResponseBody Methods with String Return Type?

Spring MVC 的带有字符串返回类型的 @ResponseBody 方法中的 HTTP 400 错误处理

使用 Spring MVC 实现 API 时,处理这一点至关重要优雅地犯错误。响应的一种常见错误代码是 HTTP 400,表示“错误请求”。

在给定的场景中,match 方法返回包含在 @ResponseBody 中的字符串,您可能想知道如何使用 HTTP 400 进行响应错误代码。使用 ResponseEntity 的传统方法是此处不直接适用,因为您的方法的返回类型是 String。

要解决此问题,请考虑将 match 方法的返回类型更改为 ResponseEntity。这将为您提供更明确地处理 HTTP 状态代码的灵活性。

更新的方法:

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public ResponseEntity<String> match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
    }
    return new ResponseEntity<>(json, HttpStatus.OK);
}</code>

此修改后的方法允许您返回带有适当的 HTTP 状态代码。如果 matchId 无效,您可以返回 HTTP 400 状态的 ResponseEntity。对于有效的请求,您可以返回带有 HTTP 200 状态和 JSON 响应的 ResponseEntity。

Spring 4.1 及更高版本:

从 Spring 4.1 开始,ResponseEntity 类提供您可以使用更简洁的方法的辅助方法:

更新方法(Spring 4.1):

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public ResponseEntity<String> match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
    }
    return ResponseEntity.ok(json);
}</code>

以上是如何处理带有字符串返回类型的 Spring MVC @ResponseBody 方法中的 HTTP 400 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn