我建议处理两个资源:student
和class
.
您可以student
使用以下 URI 获取:
http://home/someapi/v1/students/1
注意这里的复数,如果你想了解为什么应该使用复数,请阅读这篇文章:http: //blog.apigee.com/detail/restful_api_design_plural_nouns_and_concrete_names/。
如果 astudent
可以注册到 one class
,它可能是该学生的属性,因此您可以返回以下 JSON 文档(例如):
{
"student": {
"id": 1,
"firstName": "John",
"lastName": "Doe",
"class": {
"id": 10,
"name": "Room Y"
}
}
}
class
您可以使用以下 URI获取特定信息:
http://home/someapi/v1/classes/10
您可以使用以下 URI 获取给定班级的所有学生:
http://home/someapi/v1/classes/10/students
现在,如果您在和之间有NN关系,它将改变我关于JSON 表示的第一个建议。实际上,关系将成为资源的集合,而不是 a 的嵌入属性,您应该使用以下 URI:students
classes
student
class
class
student
http://home/someapi/v1/students/1/classes
意思是“检索学生 #1 的所有课程”。
您可以同时公开class
和student
资源。无需决定哪一个是主要的,因为它们描述了两种不同的事物。拥有/students
and/classes
允许您创建students
and classes
,您可以链接它们等。
最后一件事,建议使用查询参数 ( ?foo=bar
) 进行过滤。