2017-01-12 2 views
0

У меня есть приложение, которое я создал с использованием Laravel. Я просто пытаюсь понять правильные соглашения об именах для приложения. Поскольку Laravel RESTful, я хочу придерживаться правильных соглашений об именах для REST.REST маршруты именования

Предпочитаете, что у меня есть ресурс User, у которого есть ресурс . Поэтому я сохраняю внешний ключ user_id в таблице cars. В приложении я хочу обновить детали автомобиля, используя PUT. Итак, как я могу назвать свой URI? Ниже приведены три варианта, которые я рассматриваю. Но я хочу знать, какой когда-то прав:
1. /user/{id}/car/{id}
2. /car/{id}
3. /user/car/{id}

Мой вопрос, я должен включить родительский ресурс (пользователя) в URI, или я могу просто использовать идентификатор автомобиля и обновить его? Я видел в некоторых местах (например, API GitHub), что они используют родительский ресурс перед дочерним ресурсом.

Если у вас есть дублирующий вопрос, пожалуйста, дайте мне знать, поскольку я искал точный ответ перед публикацией здесь, но не смог найти.

+0

Я думаю, что это не дублируется, но относящиеся на http://stackoverflow.com/questions/20951419/what-are-best-practices-for-rest-nested-resources –

+0

В этом ответе есть несколько хороших точек относительно REST http://stackoverflow.com/a/6333146/3949926 – Mirceac21

+0

Спасибо. Обе ссылки были полезны. – ashishsanjayrao

ответ

1

Мои два цента:

я бы на

  • /car/{id} когда автомобиль идентификатор известен
  • /car/?user_id={userId} Для того, чтобы получить все автомобили, принадлежащие пользователю с известным идентификатором.

Если автомобиль всегда принадлежит пользователю (FK не может быть нулевым), вы можете добавить URL-адреса с/user, но было бы сложнее найти автомобиль, если вы не знаете, чья машина это:

  • user/{userId}/cars/ Чтобы получить все автомобили, принадлежащие пользователю с известным идентификатором.
  • user/{userId}/car/{id} Чтобы получить конкретный автомобиль

Для меня первый вариант имеет больше смысла, потому что я не вижу машину, как дитя пользователя, но так как я не знаю ни одного из ваших требований возможно, второй вариант правильный.

родитель-ребенок отношение лучше подходит для таких вещей, как компания-отдела (это не имеет никакого смысла искать ИТ-отдела, если не указать компанию, к примеру)

+0

Лично я могу изменить только множественное число для края 'car', когда id неизвестен, то есть'/user/{userId}/автомобили/'. –

+0

Спасибо Pablo.Поэтому, я думаю, чтобы обобщить ответ, если есть уверенная связь между этими двумя ресурсами, то представление иерархии имеет смысл. Если нет, тогда лучше использовать ресурс самостоятельно. Поправьте меня если я ошибаюсь. Существуют также различные типы отношений, не связанные друг с другом, которые я должен исследовать. Большое спасибо! – ashishsanjayrao

0

Я бы сказал, что 1 является подходящим случаем, так как «автомобиль» сам по себе не одинок. Это выражает лучшую идею о том, что этот автомобиль находится под этим пользователем, и его можно использовать для проверки, чтобы вы не случайно обновили автомобиль, который не является автомобилем этого пользователя.

Смежные вопросы