当前位置: 首页 > 面试题库 >

如何在Spring Boot @ResponseBody中返回404响应状态-方法返回类型为Response?

林礼骞
2023-03-14
问题内容

我正在将Spring Boot与基于@ResponseBody的方法结合使用,如下所示:

@RequestMapping(value = VIDEO_DATA_PATH, method = RequestMethod.GET)
public @ResponseBody Response getData(@PathVariable(ID_PARAMETER) long id, HttpServletResponse res) {
    Video video = null;
    Response response = null;
    video = videos.get(id - 1);
    if (video == null) {
      // TODO how to return 404 status
    }
    serveSomeVideo(video, res);
    VideoSvcApi client =  new RestAdapter.Builder()
            .setEndpoint("http://localhost:8080").build().create(VideoSvcApi.class);
    response = client.getData(video.getId());
    return response;
}

public void serveSomeVideo(Video v, HttpServletResponse response) throws IOException  {
    if (videoDataMgr == null) {
        videoDataMgr = VideoFileManager.get();
    }
    response.addHeader("Content-Type", v.getContentType());
    videoDataMgr.copyVideoData(v, response.getOutputStream());
    response.setStatus(200);
    response.addHeader("Content-Type", v.getContentType());
}

我尝试了一些典型的方法,例如:

res.setStatus(HttpStatus.NOT_FOUND.value());
新的ResponseEntity(HttpStatus.BAD_REQUEST);

但是我需要返回Response。

如果视频为空,如何在此处返回404状态代码?


问题答案:

创建NotFoundException带有@ResponseStatus(HttpStatus.NOT_FOUND)注释的类,然后将其从控制器中抛出。

@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "video not found")
public class VideoNotFoundException extends RuntimeException {
}


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

  • 我希望在spring boot中返回类似以下内容的json响应: 我的RestController如下所示 但我得到的反应是这样的

  • 本文向大家介绍symfony2 返回404响应,包括了symfony2 返回404响应的使用技巧和注意事项,需要的朋友参考一下 示例 当在服务器上找不到资源时,将返回404响应。在Symfony中,可以通过引发NotFoundHttpException异常来创建此状态。为了避免use在控制器内部添加多余的语句,请使用类createNotFoundException()提供的Controller  

  • 然而,我不知道如何创建它,所以它会给用户一个消息,说我们需要一个api变量,然后是JSON数据,然后是错误代码(或成功代码,取决于是否一切顺利)。输出示例如下: 请输入api值作为参数(注意,如果需要,这也可以在JSON中进行) {“id”:2,“api”:“3000105000”...}(注意,这将是JSON响应对象)

  • 我使用spring MVC来创建一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 问题是,在给定的场景中,什么是响应HTTP 400错误的最简单、最干净的方法? 我确实遇到过这样的做法: ...但我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。

  • 我使用Spring MVC作为一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 在给定的场景中,最简单、最干净的HTTP 400错误响应方式是什么? 我确实遇到了这样的方法: ...但是我不能在这里使用它,因为我的方法的返回类型是字符串,而不是响应实体。