RESTful URI结构,用于在不同模式下获取相同的表单

时间:2015-05-30 18:08:30

标签: forms rest

我正在设计一个需要通过AJAX请求动态加载表单的应用程序。应该有三种模式":"创建用户","更新用户"和"查看用户" (只读)。

然而,在所有三种情况下,我获取资源 - 因此这些都应该是GET个请求(我不是在谈论我用来实际提交表格)。它们都是(几乎)相同的形式,所以我认为它们是相同的资源。

在我看来,我可以做类似的事情:

GET /forms/users                     // Get a blank form for creating a new user
GET /forms/users/u/1?mode="view"     // Get a form that shows info for user 1
GET /forms/users/u/1?mode="update"   // Get a form that allows updating info for user 1

或类似的东西:

GET /forms/users                      // Get a blank form for creating a new user
GET /forms/users?id=1&mode="view"     // Get a form that shows info for user 1
GET /forms/users?id=1&mode="update"   // Get a form that allows updating info for user 1

这些中的任何一个都是"正确的"根据REST?或者我应该做些什么?

2 个答案:

答案 0 :(得分:1)

URL应该描述资源,例如:

GET /forms/info/user/new               // form to create a new user
GET /forms/info/user/1                 // form to view user 1 info

您可以传递查询字符串参数以使表单可更新。例如:

GET /forms/info/user/1?updatable=true

但这听起来像浏览器,而不是REST问题。 REST用于与API通信,更新用户信息只需要PUT动词而不是GET。

所以只需添加一些javascript代码即可让用户可以编辑该表单。

答案 1 :(得分:0)

使用GET进行"view user"操作并获取用户属性,使用PUT进行"create user"操作,使用"update user"操作使用PATCH操作{1}}。这是我以前的做法。

从REST API获取表单是一种不寻常的做法,让客户端应用程序显示从API获取的整个表单。

在你的情况下,你是对的,我猜,我能看到的唯一选择是

GET /forms/user/add           // Get a blank form for creating a new user
GET /forms/user/view/1     // Get a form that shows info for user 1
GET /forms/user/update/1  // Get a form that allows updating info for user 1