【发布时间】:2012-09-11 19:13:22
【问题描述】:
我参加了一个开发者大会,演讲者认为以下一组 URL 不是 RESTful:
/users/username/changepassword
/users/username/resetpassword
给出的主要原因是相同的 URL 可能在不同的上下文中使用,这并没有以有意义的方式促进 HATEOAS。 然后他继续争辩说,更可行的方法是使用以下 URL:
/account/changepassword
/administration/server/users/username/resetpassword
根据演讲者的说法,后一种方法允许每个用例为每个 URL 提供一个专门定制的 (html-) 表单,然后可以将其发布到同一个 URL。在不同的上下文中使用相同的 URL 不再有问题。
我会自发地说这些 URL 集都不是 RESTful 的,仅仅是因为它们都以动作(动词)为中心,在我看来这些动作(动词)并不能真正成为资源,除非在特殊情况下(如搜索) .我觉得这个设置很像 RPC。
我会建议一些更像名词和颗粒状的东西
//Change password
PUT /users/username/account/password
//Register reset
POST /users/username/account/password/resets
//Verify reset
PUT /users/username/account/password/resets/0/verification_code
你的意见是什么?演讲者是否采用 RESTful 方式,还是这里没有足够的信息?
【问题讨论】: