设计 RESTful 风格的 api, 获取短信验证码的接口应该放在哪个资源下比较好
rt, 除了获取短信验证码的接口, 还会有一些操作, 比如搜索接口, 都只是一个动作, 这些大家在设计RESTful
风格的api
时, 是如何设计的呢?
为了更详细的描述这个问题, 我举几个例子, 我指的是放在哪个资源下, 而不是动作
例如post /users
代表注册get /users
代表获取用户信息post /sessions
代表登录delete /sessions
代表退出
这里 sessions
, users
就是资源
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
如果楼主或其他同学用过 Rails 的话,理解 RESTFul 就会非常容易。下面我拿 blogs 举例,验证码的话,类似。
默认路由
为了便于理解,我加上 member, collection ... 尽管内容是空的。
它生成的 url helper, 对应 URL, 对应 Controller#Action,你能理解下面的话,一切就很简单了。
搜索,没有创建、没有更新、没有删除(从数据库“增删查改”角度看的话,它属于“查”),所以肯定是 GET 方法。
操作的是一个集合,还是单个对象呢?这里对的是多个对象,所以是 collection
其它的操作,需要楼主联想,在此就不展开了。
按照
restful
的规范(名字只能是一个名词/资源,不能出现动词),可以如下:搞不懂为什么采纳楼上的答案,这明显是回避了问题,只是把restful最适合的增删改查拿了出来。而对于本题的,短信验证码的api,却避而不谈。
说说我的理解吧:这个接口不应该用restful设计。
很简单,短信验证码的名词大家都是懂的:sms/sms-code/verify-code等等。但是,4个HTTP动词根本就没办法表达发送。
很简单,这4个动词只考虑了最一般的情况,要么就像楼上那样,强制说:我的get就是表达发送的意思。但其实这样是不对的,因为get在restful是从api获取信息的意思,同时也是幂等的,而这里api不是返回信息,而是发送验证码到用户手机,同时,也不是幂等的,这次调了,下次再调,是不一样的。
现在我的实现是这样:简单的在sms-code后加上一个动词,send,也就是sms-code/send,然后HTTP动词用post。
如果是想实现短信验证码登录,试试一些集成的账号系统吧,http://www.onlyid.net 之类的,没这些麻烦事。
用messageCode来定义资源,然后资源表述定义为get||search,按照你的提问我是这么理解的.
哈。我们项目是直接用/api/sms的。当时也没注意这么多,用得是POST,主要是考虑到每次POST 会增加服务器上的某些资源
我司这么理解的,如果执行资源操作的人是请求者,那就用名词做uri,如果执行资源操作的是服务器或者其他就创建一个服务请求,我记得有一个比较好的例子是转账业务,用transaction做uri。所以短信验证码我觉得用一个创建一个短信通知比较合理。比如sms-notify
遇见搜索咋处理呢?
这,楼主提问太抽象啦
这里可以追加问题么?
如果楼主知道麻烦回答下。。
比如说get users,这个借口,如果我想根据用户的状态加其他查询比如用where这跟get users算一个接口,还是两个?