REST路由命名

时间:2017-01-12 08:14:47

标签: laravel rest

我有一个使用Laravel构建的应用程序。我只是想了解应用程序的正确命名约定。由于Laravel是RESTful,我想为REST保留正确的命名约定。

假设我有一个User资源,其资源为Car。所以我将user_id外键保存在cars表中。在应用程序中,我想使用PUT更新汽车的详细信息。那么如何命名我的URI呢?以下是我正在考虑的三个选项。但我想知道哪一次是正确的:
1. /user/{id}/car/{id}
2. /car/{id}
3. /user/car/{id}

我的问题是,我应该在URI中包含父资源(用户)还是我可以使用汽车ID并更新它?我在某些地方(比如GitHub API)看到他们在子资源之前使用父资源。

如果有重复的问题,请告诉我,因为我在发布之前搜索了确切的答案,但找不到。

2 个答案:

答案 0 :(得分:1)

我的两分钱:

我去了

  • /car/{id}当知道车识别时
  • /car/?user_id={userId}获取具有已知身份的用户拥有的所有汽车。

如果汽车总是由用户拥有(FK不能为空),那么您可以在/用户之前添加网址,但如果您不知道哪辆车是汽车那么会更难找到汽车是:

  • user/{userId}/cars/获取具有已知身份的用户拥有的所有汽车。
  • user/{userId}/car/{id}获取特定车辆

对我而言,第一个选项更有意义,因为我不会将汽车视为用户的孩子,但由于我不知道您的任何要求,第二个选项可能是正确的

亲子关系更适合公司部门之类的事情(例如,如果您没有指定公司,那么找IT部门是没有意义的)

答案 1 :(得分:0)

我认为1是合适的情况,因为'汽车'本身并不孤立。 它更好地表达了那辆汽车在该用户之下的想法,并且它可以用于验证,因此您不会偶然更新那辆不是该用户汽车的汽车。