据我所知,根据RESTful准则,每个url都应该表示单个资源或一组资源,并且应该将操作作为参数。
假设我们有一组名为“用户”的资源,我想再注册一个用户,
因此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 apis呢?非常感谢。:)
发布于 2014-10-17 03:21:21
如果您通过发出POST (create)请求注册用户,则相反的--注销--应该是一个删除请求。
注册
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>
我认为后者更好。
https://stackoverflow.com/questions/26423813
复制