假设数据库里有这样的表:
1、studnet表
主键 | 姓名 | 性别 | 年龄 | 班级ID |
---|---|---|---|---|
1 | 张三 | 男 | 10 | 31 |
2 | 李四 | 女 | 11 | 42 |
2、班级表
主键 | 班级名称 |
---|---|
31 | 三(一)班 |
42 | 四(二)班 |
查询时,除可按ID查询,亦可按性别、年龄、班级进行相似性查找,
如果按restful要求,
查询id为1的student可以为
GET /students/1
查询班级31里所有的学生可以为
GET /classes/31/students
那么,查询班级31里所有年龄为10岁的学生该怎么写呢
GET /classes/31/students/age/10 ?
RESTful 是让你把资源映射的 URI 中,这里
classes
(班级) 可以作为一个资源,students
(学生),可以视作是班级下的资源所以
GET /classes/31/students
看起来是合理的,但是GET /classes/31/students/age/10
可就不那么合理了,age
是一个资源吗?很明显,他不算是一个资源。所以就不能放到 URI 里面去。RESTful 并不是说完全排斥使用查询参数,而是合理分配。显然,在这里使用
GET /classes/31/students?age=10
更加符合语义。