RESTful:如何在同一个网址上执行不同的操作?

据我所知,根据RESTful准则,每个url应该代表一个资源或一组资源,并且应该将操作作为参数。

假设我们有一组名为'users'的资源,并且我想要注册一个用户,
所以API可能是:

POST /users HTTP/1.1
Host: www.example.com

username=<username>&password=<password>&email=<email>&age=<age>

现在,如果我想取消注册一个用户,那么取消注册api:

方法仍然是POST
URI仍然是/users
参数可以是username=<username>&password=<password>&reason=<reason>

在这种情况下,两个apis以不同的参数共享相同的url和方法,我认为这不是一个好的设计。

所以问题是:
针对这种情况的好设计是什么,使服务器端更容易区分同一资源上的两种不同操作?

编辑
我真的很感激@蒂姆的建议,现在我希望我的问题更通用:
如果资源上有多个不同的更新操作,并且每个操作都采用不同的参数组合,那么我现在应该如何制定RESTful API? 非常感谢。 :)


如果通过发出POST(创建)请求来注册用户,则相反的 - 取消注册 - 应该是DELETE请求。

注册

POST /users HTTP/1.1
Host: www.example.com

username=<username>&password=<password>&email=<email>&age=<age>

注销
您可以选择向请求正文中的用户名和密码(用于验证)向/users发送请求

DELETE /users HTTP/1.1
Host: www.example.com

username=<username>&password=<password>&reason=<reason>

或者在请求主体中向/users/<username>请求密码(用于验证)和原因(用于任何目的)

DELETE /users/<username> HTTP/1.1
Host: www.example.com

&password=<password>&reason=<reason>

我认为后者更好。

链接地址: http://www.djcxy.com/p/7005.html

上一篇: RESTful: How to perform different actions on the same url?

下一篇: What are best practices for REST nested resources