rt, 除了获取短信验证码的接口, 还会有一些操作, 比如搜索接口, 都只是一个动作, 这些大家在设计RESTful
风格的api
时, 是如何设计的呢?
为了更详细的描述这个问题, 我举几个例子, 我指的是放在哪个资源下, 而不是动作
例如post /users
代表注册get /users
代表获取用户信息post /sessions
代表登录delete /sessions
代表退出
这里 sessions
, users
就是资源
这里可以追加问题么?
如果楼主知道麻烦回答下。。
比如说get users,这个借口,如果我想根据用户的状态加其他查询比如用where这跟get users算一个接口,还是两个?
如果楼主或其他同学用过 Rails 的话,理解 RESTFul 就会非常容易。下面我拿 blogs 举例,验证码的话,类似。
rails g scaffold blogs
默认路由
resources :blogs
为了便于理解,我加上 member, collection ... 尽管内容是空的。
resources :blogs do
member do
# ...
end
collection do
# ...
end
# ...
end
它生成的 url helper, 对应 URL, 对应 Controller#Action,你能理解下面的话,一切就很简单了。
Prefix Verb URI Pattern Controller#Action 意义
blogs GET /blogs blogs#index 文章列表页面
POST /blogs blogs#create 创建文章
new_blog GET /blogs/new blogs#new 创建文章页面
edit_blog GET /blogs/:id/edit blogs#edit 编辑文章页面
blog GET /blogs/:id blogs#show 展示文章页面
PATCH /blogs/:id blogs#update 更新文章
PUT /blogs/:id blogs#update 更新文章
DELETE /blogs/:id blogs#destroy 删除文章
说明:PATCH 和 PUT 一般不区分。
搜索,没有创建、没有更新、没有删除(从数据库“增删查改”角度看的话,它属于“查”),所以肯定是 GET 方法。
操作的是一个集合,还是单个对象呢?这里对的是多个对象,所以是 collection
resources :blogs do
member do
# ...
end
collection do
# ...
get :search # <- 这一行
end
# ...
end
search_blogs GET /blogs/search blogs#search 搜索文章
search 按照 RESTFul 来看,其实和 index 是一样的,都是 GET 请求,针对的都是集合。
其它的操作,需要楼主联想,在此就不展开了。
这,楼主提问太抽象啦
哈。我们项目是直接用/api/sms的。当时也没注意这么多,用得是POST,主要是考虑到每次POST 会增加服务器上的某些资源
我司这么理解的,如果执行资源操作的人是请求者,那就用名词做uri,如果执行资源操作的是服务器或者其他就创建一个服务请求,我记得有一个比较好的例子是转账业务,用transaction做uri。所以短信验证码我觉得用一个创建一个短信通知比较合理。比如sms-notify
用messageCode来定义资源,然后资源表述定义为get||search,按照你的提问我是这么理解的.
按照restful
的规范(名字只能是一个名词/资源,不能出现动词),可以如下:
GET /messageCode 获取验证码
POST /messageCode 刷新验证码
DELETE /messageCode 让那个验证码过期
PUT /messageCode 这个好像用不上...因为直接get那步就搞定了