我最近阅读了几个教程来介绍自己以了解更多有关其余 API 的信息。但是,我在这里和那里有一些疑问,希望有人可以帮助我解决这个问题。
阅读HTML 和 REST 初学者指南,其中指出:
“最好将资源视为名词。例如,以下内容不是 RESTful:
1 /clients/add
这是因为它使用 URL 来描述操作。这是区分 RESTful 和非 RESTful 系统的一个相当基本的点。 "
因此,我想知道在我拥有用户资源并访问它以执行通常的插入/更新/删除/检索的这种情况下
如下:
www.example.com/users [get] <-- 检索所有记录
www.example.com/users/1 [get] <-- 检索 id 为 1 的记录
www.example.com/users/1 [put ] <-- 更新 id 为 1 的记录
www.example.com/user/1 [delete] <-- 删除 id 为 1 的记录
www.example.com/user [post] <-- 插入一个新的用户记录
这将用完 4 个常用动词来提出请求。
如果我需要诸如登录之类的功能,或者通常可能需要任何其他类型的操作命令,该怎么办?在这种情况下应该如何形成 url 以及路由器应该如何重定向?
编辑:
在查看了各种评论和答案之后。我从他们那里得到的结论是,最终的解决方案将是“尽可能使用休息原则,并在不使用时使用带有函数的查询字符串方法”。
但是,我正在考虑实现的一个轻微变体(不再是一个宁静的实现,而是遵循类似的概念)并且想知道它是否可以这样工作。希望大家可以给我这方面的建议。
使用我需要实现的相同身份验证/登录功能,是否可以改为:
www.example.com/users [get] <-- 检索所有记录
www.example.com/users/1 [get] <-- 检索 id 为 1 的记录
www.example.com/users/1 [put ] <-- 更新 id 为 1 的记录
www.example.com/user/1 [delete] <-- 删除 id 为 1 的记录
www.example.com/user [post] <-- 插入一个新的用户记录
像往常一样,如果我需要执行某项操作,它将是这样的:
[controller]/[action] --- user/authenticate [post] --- 登录
[controller]/[id]/[action] --- user/1/authenticate [put] --- 注销
这行得通吗?我会面临任何可预见的问题吗?是否已经有类似的实现?请多多指教!