问题描述
我的问题是有关以下情况下在.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方法更好地理解了这一点。