REST 把数据视为资源,通过 URI 对资源进行唯一的标识。
一般是这样的:http://example*com/customers/1234
或者是这样的:http://example*com/orders/2007/10/776654
在具体项目中,如果某个 API 关联很深,就可能会导致 URI 会很长,举个不恰当的例子:中国有很多 University ;
关系如下:
University has_many colleges
College has_many clazzs
Clazz has_many students
Student has_many elective_courses
ElectiveCourse has_many homeworks
Homework has_many scores
如果我要获取 XX 大学 XX 学院 XX 学生 XX 课程 XX 作业的成绩中第 N 次成绩,URI 好像是这样的:
/universities/:univerity_id/colleges/:college_id/clazzs/:clazz_id/students/:student_id/elective_coruses/:elective_course_id/homeworks/:homework_id/scores/:score_id
,
如果在逻辑中会判断所有参数的有效性(比如 university 是否存在,某个 college_id 是否在某个 univerty 存在...) , 这种情况在复杂逻辑关联中会出现。
虽然不是处女座,但是看到这么长的 URI 好纠结。话说稍旧的 Swagger 也会让这个 URI 不换行。
不知道各位在实践中是如何处理类似问题的,希望提出意见。谢谢。
Option 1:
/scores/:score_id?univerty_id=1&college_id=2&clazz_id=3&student_id=4& ... &homework_id=10