【发布时间】:2010-11-17 18:41:59
【问题描述】:
我有一个称为“事实”的资源集合的 URI,以及该集合中每个“事实”资源的 URI。
我认为应该使用 GET 请求创建新“事实”的表单,但我无法确定应该使用哪个 URI。
对集合 URI 的 GET 应返回“事实”资源 URI 的列表。每个“事实”URI 都应将其内容作为对 GET 的响应返回。当然,实际的“事实”创建将是一个 POST(或 PUT,取决于具体情况)。
我看到了一些选项,但似乎没有一个令人满意:
- 添加“事实”URI 将引用的“事实形式”URI。对这个 URI 的 GET 给出 HTML 表单。仅仅为了描述一个资源而拥有另一个资源似乎是错误的。
- 在标题中不包含任何表单数据的“事实”URI 的 POST 将返回表单。然后在用户填写表单后,它将使用表单数据发布,并创建新的“事实”资源。这似乎是一种更糟糕的方法。
- 不要通过网络发送表单,而是将其作为 API 的一部分。这似乎是 RESTful 的,因为 REST API 应该描述媒体类型,并且可以从“事实”类型的描述中生成表单。这实现起来很奇怪。也许 REST 服务与常规网站是分开的,因此实际的 HTML 表单请求位于与 REST API 不同的某个 URI。
- 将 HTML 表单作为“事实”URI 响应的一部分。
为了澄清,我正在尝试遵循 Roy Fielding 指定的真正 REST 架构,而不是冒充 REST 的半生不熟的 RPC。
编辑:我开始认为#3 是在做某事。
edit2:我认为一种解决方案是以 CRUD 方式进行常规非 REST HTML 导航,然后前端进行适当的 AJAX REST 调用(或后端对其 REST API 进行内部调用)。
我需要正确执行此服务的 REST 部分的原因是我希望允许其他非 HTML 客户端稍后与之交互。
【问题讨论】:
标签: html web-services architecture rest