gpt4 book ai didi

java - 如何在返回对象的 Spring MVC @RestController @ResponseBody 类中响应 HTTP 状态代码?

转载 作者:IT老高 更新时间:2023-10-28 12:50:15 25 4
gpt4 key购买 nike

我正在尝试让 @RestController 接受 @PathVariable 以 JSON 格式返回特定对象以及正确的状态代码。到目前为止,代码的方式是返回 JSON 格式的对象,因为它默认使用 Spring 4 内置的 Jackson 库。

但是我不知道如何制作它,所以它会向用户发送一条消息,说我们想要一个 api 变量,然后是 JSON 数据,然后是错误代码(或成功代码,取决于一切是否顺利)。示例输出为:

Please enter api value as parameter (NOTE this can be in JSON as well if needed)

{"id": 2, "api": "3000105000" ... } (NOTE this will be the JSON response object)

Status Code 400 (OR proper status code)


带参数的url是这样的

http://localhost:8080/gotech/api/v1/api/3000105000

我目前的代码:

@RestController
@RequestMapping(value = "/api/v1")
public class ClientFetchWellDataController {

@Autowired
private OngardWellService ongardWellService;

@RequestMapping(value = "/wells/{apiValue}", method = RequestMethod.GET)
@ResponseBody
public OngardWell fetchWellData(@PathVariable String apiValue){
try{
OngardWell ongardWell = new OngardWell();
ongardWell = ongardWellService.fetchOneByApi(apiValue);

return ongardWell;
}catch(Exception ex){
String errorMessage;
errorMessage = ex + " <== error";
return null;
}
}
}

最佳答案

一个 @RestController不适合这个。如果您需要返回不同类型的响应,请使用 ResponseEntity<?>您可以在其中显式设置状态代码。

bodyResponseEntity将以与任何 @ResponseBody 的返回值相同的方式处理带注释的方法。

@RequestMapping(value = "/wells/{apiValue}", method = RequestMethod.GET)
public ResponseEntity<?> fetchWellData(@PathVariable String apiValue){
try{
OngardWell ongardWell = new OngardWell();
ongardWell = ongardWellService.fetchOneByApi(apiValue);

return new ResponseEntity<>(ongardWell, HttpStatus.OK);
}catch(Exception ex){
String errorMessage;
errorMessage = ex + " <== error";
return new ResponseEntity<>(errorMessage, HttpStatus.BAD_REQUEST);
}
}

请注意,您不需要 @ResponseBody@RequestMapping @RestController 中的方法带注释的类。

关于java - 如何在返回对象的 Spring MVC @RestController @ResponseBody 类中响应 HTTP 状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134331/

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