如何为导出端点设计 REST API?
How to design REST API for export endpoint?
我正在设计 REST API 并且 运行 遇到了设计问题。我有 alerts
,我希望用户能够 export
到少数文件格式之一。所以我们已经进入 actions/commands 和 export
,这感觉像是 RPC 而不是 REST。
此外,我不想采用默认文件格式。相反,我想要求提供它。我不知道如何设计 API 来做到这一点,我也不知道如果没有提供必需的参数,对 return 的响应代码是什么。
这是我的第一个尝试:
POST /api/alerts/export?format=csv
或
POST /api/alerts/export/csv
此端点是否按照您的方式设置?是否以正确的方式设置要求文件格式?如果未提供所需的文件格式,return 的正确状态代码是什么?
谢谢。
事实上,您应该考虑使用 HTTP 内容协商(或 CONNEG)来执行此操作。这利用了 Accept
header(请参阅 HTTP 规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1)指定响应的预期媒体类型。
例如,对于 CSV,您可以这样设置:
GET /api/alerts
Accept: text/csv
如果你想指定额外的提示(文件名,...),服务器可以 return Content-Disposition
header(参见 HTTP 规范: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"
(...)
希望对你有帮助,
蒂埃里
我正在设计 REST API 并且 运行 遇到了设计问题。我有 alerts
,我希望用户能够 export
到少数文件格式之一。所以我们已经进入 actions/commands 和 export
,这感觉像是 RPC 而不是 REST。
此外,我不想采用默认文件格式。相反,我想要求提供它。我不知道如何设计 API 来做到这一点,我也不知道如果没有提供必需的参数,对 return 的响应代码是什么。
这是我的第一个尝试:
POST /api/alerts/export?format=csv
或
POST /api/alerts/export/csv
此端点是否按照您的方式设置?是否以正确的方式设置要求文件格式?如果未提供所需的文件格式,return 的正确状态代码是什么?
谢谢。
事实上,您应该考虑使用 HTTP 内容协商(或 CONNEG)来执行此操作。这利用了 Accept
header(请参阅 HTTP 规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1)指定响应的预期媒体类型。
例如,对于 CSV,您可以这样设置:
GET /api/alerts
Accept: text/csv
如果你想指定额外的提示(文件名,...),服务器可以 return Content-Disposition
header(参见 HTTP 规范: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"
(...)
希望对你有帮助, 蒂埃里