我正在设计 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(使用前将#替换为@)