如何解决Restful URL约定:同一资源的多个级别
我的问题是有关以下情况下在.net核心Web API中命名路由的正确方法:
这是我的问题所基于的数据库架构
/api/store
2-我想获得所有教授和学生的能力,所以我有:
/api/student
/api/professor
3-问题
Student :
{
"IdStudent": 1,"FavoriteStoreId":2
}
Prof :
{
"IdProfessor": 1,"FavoriteStoreId":2
}
因此,如果我要“ FavoriteStore”对象,则需要在第一次调用api / student / 1并检索FavoriteStoreId之后调用api/store/2
。
但是如果我想在一个电话中获得收藏夹怎么办?
是执行类似操作的正确方法吗?
api/student/1/store or api/student/1/favorite-store
所以我有多个可能返回商店的URL:
api/student/1/store GET student favorite store
api/professor/1/store GET professor favorite store
api/store GET all store
但所有这些都是相同的资源(-> Store table后面的相同实体)
所以我想知道这是否是个好方法?
谢谢
解决方法
我认为,正确的方法是在首次调用api / student / 1并检索FavoriteStoreId之后调用api / store / 2。
由于要获取学生的FavoriteStoreId,还需要首先获取学生ID,然后获取商店ID。这是两个步骤。
如果您直接致电api / student / 1 / favorite-store,则还需要先获取学生,然后再获取商店。这也是两个步骤。
我认为没有区别。但是,如果您在第一次调用api / student / 1之后调用api / store / 2并检索FavoriteStoreId,则比创建新的api方法更好地理解了这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。