我正在实现一个基本上是文档存储的RESTful API,但是我遇到了一个问题,因为我需要一种混合方法来处理可以在这些文档上执行的操作。
基本上,用户应该能够生成存储为JSON 但的PDF版本的文档,生成任意传递的JSON字符串的PDF版本(数据库中没有记录)。 PDF报告永远不需要存储在任何地方,它们总是在运行中生成。
我当前的API如下:
/Documents
/Documents/1234
/Documents/1234?rev=4
现在,实现PDF生成的一种方法是:
/Documents/1234/Reports
或
/Reports/1234
但是,由于我们不需要存储PDF(即时生成),因此它们都只减少为GET操作,而且它并不真正作用于“报告”对象 - 这似乎并不适用于我
进一步复杂化的是,用户应该能够手动将JSON blob传递给服务并获取PDF。如下所示:
/API/GeneratePDF
对于这一个操作,单独的无状态API是否有意义?然后可能会将/ Reports / 1234之类的请求重定向到带有1234文档的JSON blob的/ API / GeneratePDF。这一切看起来有点乱:)
答案 0 :(得分:1)
网址'/ reports / 123 /'指向'报告'资源,对它将采取什么后端操作无关紧要。
在考虑resource-url及其相关操作时,唯一相关的操作是“GET / PUT / POST / DELETE”
然后将业务操作(如生成PFD报告)映射到url + HTTP-Op + params。
就像在这种情况下,将“生成PDF报告”映射到“GET / reports / 123 /”
用例-1:简单获取报告
GET /reports/123/
return: {pdf-report}
用例2:自定义报告
GET /reports/123/
param: {"json info passed along with the get operation"
return: {pdf-report}
后端可以检测客户端是否有输入来决定应该采取哪些特定的后端操作来生成报告。
希望这有帮助!