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

2024-01-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 http://square.github.io/retrofit/javadoc/retrofit/client/Response.html.

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


这很简单,通过抛出org.springframework.web.server.ResponseStatusException:

throw new ResponseStatusException(
  HttpStatus.NOT_FOUND, "entity not found"
);

它兼容@ResponseBody并具有任何返回值。需要 Spring 5+

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何对 Rails 中 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

    我在 Rails 应用程序中使用 Prawn 和 Prawnto 插件生成 PDF 文件 我创建一个带有标准文本区域的标准表单 并将其作为 PDF 文件的正文提交 但是 我需要能够使用以下方式格式化单词和句子 bold 强调 也许不同的字体
  • 受影响的行实体框架

    如何获取 SaveChanges 后受影响的行数 The 保存更改 http msdn microsoft com en us library bb336792 aspx方法返回所有已更改项目的 int MSDN 片段 返回值 类型 Sys
  • 在javascript中选择区域/矩形

    我需要通过鼠标在 HTML5 页面中选择一个区域 然后我将与该区域内的元素进行交互 一定有一种简单的方法可以做到这一点 但我找不到现成的任何东西 不幸的是 jquery UI 选择不起作用 因为它似乎只支持一个父元素 有没有现成的东西可以在
  • 如何以编程方式突出显示 UIButton?

    很多用户抱怨 iPhone 上的小 i 信息按钮很难触摸 好吧 很简单 我只是在它后面贴了一个又大又大的隐形按钮 即使你用最粗心的手指触摸也不会错过它 当你触摸它时 它就会执行 infoButtonAction 事实是 我想让信息按钮本身闪
  • 递归算法的空间复杂度

    我在一次面试中被问到 解决问题的有效方法是检查回文 现在我可以做两件事 从 i 0 开始到 i n 2 并比较第 i 个和第 n 个字符是否相等 我可以使用递归来检查第一个和最后一个是否相同 并且字符串的其余部分是否为回文 第二个是递归的
  • 垃圾收集机制如何工作? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用外行术语来说 垃圾收集机制是如何工作的 如何识别对象可用于垃圾回收 还有 做什么Reference Counting Mark an
  • 如何判断 Map 是否有默认值?

    有没有办法检查是否Map有定义的默认值吗 我想要的是相当于myMap getOrElse x y 如果关键在哪里x不在地图上 if myMap有默认值 返回该值 否则返回y 该问题的一个人为示例 scala gt def f m Map S
  • 如何在 MFC 应用程序中托管 WPF 表单

    我正在寻找有关在现有 MFC 应用程序中托管 WPF 表单的任何资源 谁能指出我如何做到这一点的正确方向 据我了解 我自己没有尝试过 这几乎就像将 WPF 控制权交给父级句柄一样简单 这是一个演练 在 Win32 中托管 WPF 内容 ht
  • 如何从.net core实体框架调用带有表值参数的存储过程

    我有一个带有表值参数的存储过程 我必须从 net core 中的实体框架调用它 我在上下文对象上找不到任何 API 我尝试过使用 ADO net API 它有效 但现在我必须从 net core 中的 EF 调用它 我必须调用的存储过程返回
  • PHP 多维数组访问

    假设我在 PHP 中有一个多维数组 例如 this array array string name gt string string array gt array string key gt string val 如何访问字符串数组键值对
  • XML 解析错误:文档末尾有多余内容

    我的 xml 文件中出现此错误 XML Parsing error Extra content at the end of the document 我正在使用 Notepad 它在标题标签中显示第二个红色单词
  • Linq 中的 Union 与 Concat

    我有一个问题Union and Concat var a1 new 1 2 Union new 1 2 O P 1 2 var a2 new 1 2 Concat new 1 2 O P 1 2 1 2 var a3 new 1 2 Uni
  • 如何在 Android 设备上的 Flutter 应用程序中显示 TIFF 图像?

    我们的应用程序允许用户建立各种类型的资源库 例如 PDF 电子表格等 我们存储在 S3 上的几乎任何 MIME 类型的文档 当用户点击查看任何这些资源时 我们基本上可以确定我们使用的是 iOS 设备还是 Android 设备 在 iOS 上
  • 频繁使用 localStorage 会减慢我的网站速度吗?

    我正在开发一个 HTML5 游戏 我需要知道频繁更新 localStorage 属性是否会减慢页面速度 我实际上将英雄的位置存储在四个 localStorage 属性中 两个用于实际位置 两个用于碰撞检测系统中使用的过去位置 并每 1 秒间
  • 无需登录或没有任何安全性即可浏览 Nexus 存储库

    我这里有一个非常简单的用例 用例 要求 我想配置我所有的 Nexus 存储库 与我在中看到的非常相似https oss sonatype org view repositories appfuse releases browseindex
  • gitlab-ci.yml 文件中 [STRING] 的正则表达式

    我试图在 gitlab ci yml 文件中设置部署阶段的规则 如果 git 提交消息具有这种格式的特定 STRING 那么它应该部署到编写此规则的特定环境 Deploy to QAT environment deploy qat stag
  • WPF:处理损坏的字体缓存

    我有一个 WPF 应用程序 NET 3 5 通常在我们客户的 XP 计算机上运行 在过去 5 个月中 已发生 3 次损坏的字体缓存导致应用程序在加载时停止响应 删除字体缓存these http support microsoft com k
  • 覆盖扩展中现有的 Visual Studio Code 命令

    是否可以覆盖现有的 VS Code 命令 例如editor action clipboardPasteAction 通过覆盖 我的意思是注册我自己的命令 每次应该调用原始命令时都会自动调用该命令 例如 editor action clipb
  • 错误:this.element.uniqueId 不是函数。 jQuery 用户界面。有人以前见过这个吗?

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

    我使用 Spring Boot 和基于 ResponseBody 的方法 如下所示 RequestMapping value VIDEO DATA PATH method RequestMethod GET public ResponseB