Я разрабатываю некоторые базовые полноценные веб-сервисы с использованием PHP и apache, и мне интересно, должен ли я создавать URL-адреса, предоставляющие имя родительского объекта или нет. Позвольте мне объяснить это лучше:
У меня есть 2 объекта, предположим, страны и города . Сейчас я просто предоставляю WS для получения, создания, обновления или удаления городов , но API не будет поддерживать манипуляции стран через WS. Я переназначаю URL-адреса, используя mod_rewrite , и я предоставляю следующие URL-адреса в API для управления городами:
. GET /api/countries/<country_id>/cities cities of country with id <country_id>
. GET /api/countries/<country_id>/cities/<city_id> city with id <city_id>
. POST /api/countries/<country_id>/cities add a city to country with id <country_id>
. PUT /api/countries/<country_id>/cities/<city_id> update the city whose country has id <country_id>
. DELETE /api/countries/<country_id>/cities/<city_id> delete city ...
Я начал внимательно присматриваться к этим URL-адресам и запутался, нужно ли указывать имя и идентификатор родительского объекта или нет. Я полагаю, что города нельзя назначать более чем в одну страну, т. Е. Это не отношения «многие ко многим». Предполагая это, я думаю, что более короткий шаблон URL может быть предоставлен для многих функций API. Например, если клиент хочет удалить какой-то город, будет достаточно, если он отправит:
. DELETE /api/cities/14
Я знаю, что город принадлежит одной стране, и клиенту не нужно узнавать идентификатор страны, прежде чем сделать запрос.
Большинство URL-адресов могут быть преобразованы в этот более короткий вид URL, за исключением первого (получить все города страны).
Это мой первый раз, когда я разрабатываю веб-сервисы, и я не слишком много об этом читал, поэтому, возможно, я что-то неправильно понимаю. Могу ли я получить совет? Большое спасибо и извините за мой элементарный английский.
РЕДАКТИРОВАТЬ1: Я думаю, что вопрос можно обобщить в «Как я должен обрабатывать отношения сущностей в URL-адресах API?»