【发布时间】:2021-08-08 23:44:18
【问题描述】:
我正在创建一个 REST API,但我对如何组织以下端点的 url 有一些疑问:
- 列出所有大学
- 列出给定大学的所有学院
- 检索学院/大学的详细信息
我认为有这样的东西是有意义的(虽然最后一个有一个不必要的参数,inst_id,为了便于阅读,我决定在那里):
#list all universities
/api/v1/universities
#retrieve university detail
/api/v1/universities/{inst_id}
#list faculties of a university
/api/v1/universities/{inst_id}/faculties
#retrieve details of a faculty
/api/v1/universities/{inst_id}/faculties/{inst_unit_id}
这样做的问题是,大学和教师的详细信息是由同一个服务提供的,所以有两个网址没有意义。
那我应该如何组织呢?我认为这两个选项都可以:
- 使用大学 URL 检索教师详细信息。这很好,因为没有不必要的参数,但在列出所有学院后,它有点“返回”以获取学院详细信息:
#list all universities
/api/v1/universities
#retrieve university/faculty detail
/api/v1/universities/{inst_id}
#list faculties of a university
/api/v1/universities/{inst_id}/faculties
- 使用教师 URL 检索大学详细信息。我认为这样的流程更容易理解,它不会在路线中“返回”。但是,最后一个端点接收到一个不必要的参数,并且大学详细信息 url 不是紧跟在路由中的大学 url 列表之后:
#list all universities
/api/v1/universities
#list faculties of a university
/api/v1/universities/{inst_id}/faculties
#retrieve university/faculty detail
/api/v1/universities/{inst_id}/faculties/{inst_unit_id}
我应该使用哪一个?还有其他建议吗?
谢谢!
【问题讨论】:
标签: web-services api-design endpoint rest