restful 的一些疑问

UserController

user表
id mobile password
user_info 表
uid nickname sex avatar 

--登陆
function actionLogin()

end

--注册
function actionRegister()
 
end

--注销
function actionSignOut()

end

--修改密码
function actionModifyPassword()

end

--获取用户详细信息
function actionInfo()

end

restful 应该怎么来转换这些url
/user/register 这个我可以理解成 post /users
/user/login 这个应该怎么转换?
/user/sign-out 这个可以理解成  put /users 
/user/modify-password 这个可以理解成 put /users
/user/info 这个应该怎么转换? get /users/id/info 
如果是这样的话,我感觉很迷茫, 是不是应该 新写一个UserInfoControler get user-infos

用restful我感觉自己不知道要怎么写代码啊。。。。求帮忙。
阅读 1.8k
1 个回答

不要将restful理解为不在url中使用动词,你可以把登陆看作一个服务,post /login 就行了。
要理解restful首先得直到Representational State Transfer每个单词指的是什么。Representational表现(具象)指资源(resource)表现给你的样子。
state状态是指资源当前的状态,你增删改都可以理解为改变资源的状态,比如从user数据1条变为2条,某个user名字改变。
transfer就是指状态改变的这一过程,从客户端到服务端,怎么将这么一种变过传输过去,那就是通过http的GET、POST、PUT、DELETE,通过这四个动词告诉服务端资源的状态如何改变。
而理解这些的前提就是,你要将uri看作是一种资源,资源可以是某个实体类(user),可以是某个服务(login),因此对于动词我们应尽量转为名词,但是此处login用动词显然更明了,那我们就用动词也没关系。
当然rest还有其他的一些约束,比如说利用http的状态码表示操作的状态,比如数据传输使用json格式等等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进