当前位置: 首页 > 知识库问答 >
问题:

如何在返回对象的Spring MVC@RESTController@ResponseBody类中使用HTTP状态代码进行响应?

丁恩
2023-03-14

然而,我不知道如何创建它,所以它会给用户一个消息,说我们需要一个api变量,然后是JSON数据,然后是错误代码(或成功代码,取决于是否一切顺利)。输出示例如下:

请输入api值作为参数(注意,如果需要,这也可以在JSON中进行)

{“id”:2,“api”:“3000105000”...}(注意,这将是JSON响应对象)

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;
        }
    }
}

共有1个答案

齐锐进
2023-03-14

@restcontroller不适合于此。如果需要返回不同类型的响应,请使用responseentity ,在这里可以显式设置状态代码。

ResponseEntity正文的处理方式将与任何@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);
    }
}

请注意,在@RestController注释类中的@RequestMapping方法上不需要@ResponseBody

 类似资料:
  • 问题内容: 我在SpringMVC项目中将新的Java API(JSR 353)用于JSON。 这个想法是生成一些Json数据并将其返回给客户端。我所拥有的控制器看起来像这样: 当我访问它时,我没有得到JSON的预期表示,而是得到了这些: 为什么是这样?到底是怎么回事?以及如何使其正确返回预期的JSON? 问题答案: 当您意识到新的JSR 353 API 没有特殊要求时,答案很简单。相反,在这种情

  • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头

  • 我希望返回http状态代码和响应对象。如果我只是在失败场景中返回response object,则状态返回为200。但是我希望将服务返回的状态(例如:403)与响应对象一起发送。但是下面的代码只是返回消息和状态。在这种情况下,我想要响应对象orderdetails对象,它有失败原因和其他字段。如何将对象传递回客户端有什么帮助吗?

  • 问题内容: 我正在将Spring Boot与基于@ResponseBody的方法结合使用,如下所示: 我尝试了一些典型的方法,例如: res.setStatus(HttpStatus.NOT_FOUND.value()); 新的ResponseEntity(HttpStatus.BAD_REQUEST); 但是我需要返回Response。 如果视频为空,如何在此处返回404状态代码? 问题答案:

  • 我正在使用基于@ResponseBody的spring boot方法,如下所示: 我尝试了一些典型的方法,如: res.setstatus(httpstatus.not_found.value()); 新建ResponseEntity(httpstatus.bad_request); 但我需要回复。 如果视频为空,如何返回404状态码?

  • 问题内容: 我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201? 对于诸如404之类的错误,我们可以致电: 但是对于201我得到 LookupError:201都不例外 我是否需要创建自己的例外,像这样的文档? 问题答案: 你可以在这里阅读。