我有一个名为'facts'的资源集合的URI,以及该集合中每个'fact'资源的URI。
我相信应该使用GET请求创建新“事实”的表单,但是我无法确定应该对其进行哪些URI。
对集合URI的GET应返回“事实”资源URI的列表。每个'事实'URI应该返回其内容作为对GET的响应。当然,实际的“事实”创建将是POST(或PUT,具体取决于具体情况)。
我看到了一些选项,但似乎没有一个令人满意:
为了澄清,我正在努力遵循Roy Fielding所指定的真正的REST架构,而不是半生不熟的RPC作为REST。
编辑:我开始认为#3正在发展。
edit2:我认为解决方案是以CRUD方式定期进行非REST HTML导航,然后前端根据需要进行AJAX REST调用(或者后端对其REST API进行内部调用)。
我需要正确执行此服务的REST部分的原因是我希望以后允许其他非HTML客户端与其进行交互。
答案 0 :(得分:2)
在我看来,唯一干净利落的RESTful答案是1和3.
正如我所看到的,资源的描述是它自己的资源。问题是您是否希望通过应用程序的API访问此资源,或者您是否希望将其作为API本身的一部分。
对于1,似乎RESTful使URI像这样:
GET / fact - >所有事实 GET / facts / 1 - >返回事实1(显然id可能是一个单词或其他东西) GET / facts / create - >返回适合创建事实的表单 POST /事实 - >添加一个事实
答案 1 :(得分:-1)
我认为你过分复杂了。 Web浏览器不是一个完美的REST客户端,因此您无法拥有完美的RESTful解决方案。在完美的世界中,您根本不需要表单,因为Web浏览器会知道您的媒体类型并自行构建表单。
与此同时,我建议您只使用大多数REST框架在资源上调用额外的“视图”来返回表单:
例如。 /your/collectionresource?view=form
或/your/collectionresource;form