微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Restful URL约定:同一资源的多个级别

如何解决Restful URL约定:同一资源的多个级别

我的问题是有关以下情况下在.net核心Web API中命名路由的正确方法

这是我的问题所基于的数据库架构

enter image description here

1-我想要获取所有商店的功能,所以我有

/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 举报,一经查实,本站将立刻删除。