一些场景中RESTful url 应该怎么写?

拉风的道长 发布于 2014/07/17 14:28
阅读 2K+
收藏 1
1 用户登录 
一般的写法 GET http://localhost:8080/Test/login.do?username=name&password=p 

REST的原则之一是:网络上的所有事物都被抽象为资源 

这么说,所有的url都应该是名词形式的,不应该是动词或者动宾结构? 
对应的 RESTful: GET http://localhost:8080/Test/users/user?username=name&password=p ?? 

2 删除多个用户 页面表单中有checkbox,可以删除多个用户 
一般的写法 POST  http://localhost:8080/Test/deleteUser.do 

传一个参数userIds,是删除用户的id的列表 

改成RESTful DELETE  http://localhost:8080/Test/users/user 
还传参数userId? 这样写好么? 

3 给用户分配设备,权限等操作 
一般的写法 POST  http://localhost:8080/Test/grantUserPrivilege.do?userId=id1&privilegeId=id2 
典型的动宾形式, 
改成RESTful的要怎么写呢?这个不知道怎么写。
加载中
0
张山疯
张山疯

1, POST {"username": "name", "password": "p"} http://localhost:8080/Test/login.do 

2,DELETE ["user1", "user2"] http://localhost:8080/Test/User.do 

注:有的框架不支持DELETE传参数,用POST替代

3,PUT/POST {"user“: "id1", "privilegid": "id2"} http://localhost:8080/Test/UserPrivilege.do


几点补充:

1,url尽量使用名词,/user, /privilege,相当于数据库库名。不过这样跟jsp的action命名方式有冲突,自己斟酌。

2,GET, POST, PUT, DELETE可对应sql的select, insert, update, delete。

3,querystring不要用来传递资源参数,但可以传递控制参数。比如GET /user?page=1&pagesize=100


0
char1st
char1st

1Login是名词.

2请看这里http://stackoverflow.com/questions/2421595/restful-way-for-deleting-a-bunch-of-items/2421643#2421643 是分成2步做的。

3我觉得是应该是 用post或者patch  /Test/user     body是一个user的json 里面是有userid,设备或者权限等属性。

返回顶部
顶部