java - 如何在返回对象的 Spring MVC @RestController @Respon

我正在尝试让 @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/

相关文章:

javascript - 如何修复vim中的JSON缩进?

ruby-on-rails - 在Rails中将所有 Controller 参数从camelCase

java - 使用 jackson 创建一个 json 对象

json - 在 Python 中解析 HTTP 响应

ios - NSURLRequest 中不支持的 URL

php - 使用 ajax 将 JSON 发送到 PHP

c# - 如何反序列化 JSON 数据?

c# - 无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型

jquery - 使用 jQuery 和 JSON 填充表单?

javascript - 将 JSON 数据导入 Google 表格