我正在设计一个需要通过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?或者我应该做些什么?
答案 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