如何设计导出端点的REST API?

2024-04-29

我正在设计 REST API 并遇到设计问题。我有alerts我希望用户能够export为少数文件格式之一。所以我们已经开始执行操作/命令了export,感觉像是 RPC 而不是 REST。

此外,我不想采用默认的文件格式。相反,我想要求提供它。我不知道如何设计 API 来做到这一点,而且我也不知道如果未提供所需参数,要返回什么响应代码。

这是我的第一个尝试:

POST /api/alerts/export?format=csv

OR

POST /api/alerts/export/csv

该端点是否按照您的方式设置?它是否以正确的方式设置来要求文件格式?如果未提供所需的文件格式,则返回的正确状态代码是什么?

Thanks.


事实上,您应该考虑 HTTP 内容协商(或 CONNEG)来执行此操作。这利用了Accept标头(请参阅 HTTP 规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1)指定响应的预期媒体类型。

例如,对于 CSV,您可以有类似的内容:

GET /api/alerts
Accept: text/csv

如果您想指定其他提示(文件名,...),服务器可以返回Content-Disposition标头(请参阅 HTTP 规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1)在响应中,如下所述:

GET /api/alerts
Accept: text/csv

HTTP/1.1 200 OK
Content-Disposition: attachment; filename="alerts.csv" 

(...)

希望对你有帮助, 蒂埃里

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

如何设计导出端点的REST API? 的相关文章

随机推荐

  • Drupal 6 和 7 从标头中取消设置 Javascript

    编辑 我的问题适用于 Drupal 6 和 7 尽管我的代码示例是 Drupal 6 人们提供的答案对于 Drupal 的两个版本都很有用 我目前正在 Drupal 中为 Drupal 6 网站创建移动主题 并尝试通过以下方式删除所有不必要
  • jquery - 不是函数错误

    这是我的代码 function fn pluginbutton function options myoptions extend left true return this each function var focus false if
  • 当服务器仅从请求中读取标头时,Http 客户端未收到响应

    我在 Java 中搞乱了 HTTP 和套接字 希望你能对此有所了解 当我用 Java SE 11 编写的 HTTP 服务器没有读取整个请求然后响应时 客户端不会收到它或收到错误 这是为什么 在服务器读取整个请求之前 客户端是否无法读取响应
  • 如何生成可可靠扫描的小型、高密度线性条形码?

    我正在努力将 POS 系统集成到我的网站 所以我想生成条形码 我使用 SKU 作为数据字段来编码甲酸盐是XXXXX XXX XXX XXX X 是从 0 到 9 的数字 所以经过研究 我发现代码 128 是最好的纠正我的方法 如果我错了 尺
  • 如何在类的参数中保留对另一个对象的引用

    我刚开始学习Apple Swift语言 无法理解 如何在类的参数中保留对另一个对象的引用 List my custom class class RecordsList NSObject var listObj List init inout
  • 如何使用 JavaScript 动态更改 Highcharts 中的数据点

    我正在尝试改变现有系列中的一个点 通过查看 API 我一直在尝试以下操作 chart series 0 data 0 y 43 chart redraw 我确信我错过了一些简单的东西 但我无法弄清楚 感谢您的帮助 您不能只设置该值 Char
  • AngularJS - 加载时触发表单验证

    我在表单中添加了 required 和 pattern 等字段验证属性 并且该表单位于 ng controller 内 验证有效 但似乎验证是在页面加载时触发的 并且我看到页面加载时所有字段都被标记为无效并带有错误消息 我尝试将 novav
  • 从 Java 监听系统鼠标点击

    我的主要目的是计算特定应用程序上的鼠标点击次数 想象一下 我在 PC 上打开了 Microsoft Word 和 Web 浏览器 我的 Java 代码应该告诉我单击 Word 和 Web 浏览器的次数 我需要应用程序名称和点击次数 我怎样才
  • 将公式应用于一列中的所有单元格,而不是一次只应用于一个单元格?

    在 OpenOffice org Calc 中 我想将公式应用于引用同一行但不同列中的单元格的列 IE C1 48在单元格 D1 中 但我希望 D 列中的所有单元格都执行此操作 而无需手动将公式复制到每个单元格 或者换句话说 对于 C 中具
  • TypeError:PyQt4.QtCore.QVariantAnimation 表示 C++ 抽象类,无法实例化

    我有这个 PyQt5 片段 我正在尝试将其转换为 PyQt4 PyQt5 版本运行得很好 但是当我尝试转换为 PyQt4 时 出现此错误 我删除了QtWidgets但我仍然收到此错误 我也尝试过实例化self animation QtCor
  • WAR 文件在 Tomcat 服务器中抛出 OutOfMemoryError

    我有一个 Spring MVC WAR 文件 可以在我的本地计算机 程序和网站 中完美运行 一旦我将文件上传到服务器 aTomcat 7 并尝试访问它 catalina 日志文件表明java lang OutOfMemoryError 我尝
  • 将每分钟的 MP3 导出为单独的 WAV

    这绝对是一个奇怪的问题 但我正在寻找一种方法 将 60 分钟的 mp3 混合拆分为 60 个单独的 1 分钟长的 wav 文件 以便与 Echonest 等音频指纹识别 API 一起使用 这是否可以在单个 ffmpeg 命令中实现 或者我是
  • 对于 ASP.NET 中的大型网站,推荐的解决方案结构是什么

    我目前正在尝试重构一个根本没有任何分离的项目 asp net mvc 只是文件夹 s 该项目有一堆 EF Code First 类 People cs Exam cs Message cs等 该项目有几个存储库 都使用 EF Data 语境
  • 将 JQuery 日期选择器数据传递到 Rails 控制器

    我是 Rails 和 JQuery 的新手 所以我会尽力解释这一点 我正在尝试将 JQuery 日期选择器值传递给我的 Rails 控制器 该页面上有数据 我希望用户能够根据日期范围进行过滤 关于这个主题有许多不同的帖子 将变量从 jque
  • 理解 Haskell 中的矩阵转置函数

    这个矩阵转置函数有效 但我试图理解它的逐步执行 但我不明白 transpose a gt a transpose transpose x map head x transpose map tail x with transpose 1 2
  • 如何将 Google proto 时间戳转换为 Java LocalDate?

    我们需要将 Google Protobuf 时间戳转换为正常日期 在这种情况下 有没有办法将 Google Proto 缓冲区时间戳转换为 JavaLocalDate直接地 tl dr 作为 UTC 时刻 转换为java time Inst
  • 树莓派和 GitLab

    有什么办法可以运行 GitLab http gitlab org gitlab ce http gitlab org gitlab ce 和 GitLab CI http gitlab org gitlab ci http gitlab o
  • WinRT 中是否有 String.Normalize() 替代方案?

    WinRT 中是否有 string Normalize 的替代方案 我想简单地使用从输入字符串中删除重音符号这种方法 https stackoverflow com questions 4046937 removing diacritics
  • 如何将值从 recyclerview 项目传递到另一个活动

    当我们单击 recyclerview 项目时 我试图将 recyclerview 项目中的值传递给另一个活动 这里我使用的是OnItemTouchListener 我从 JSON 检索数据并将其解析为 ArrayList 我保存了5个参数
  • 如何设计导出端点的REST API?

    我正在设计 REST API 并遇到设计问题 我有alerts我希望用户能够export为少数文件格式之一 所以我们已经开始执行操作 命令了export 感觉像是 RPC 而不是 REST 此外 我不想采用默认的文件格式 相反 我想要求提供