Я пытаюсь завершить работу над спокойной структурой URL-адресов для раздела списков желаний сайта, над которым я работаю. Это довольно простая модель: у пользователя может быть много списков желаний, и каждый список желаний может содержать множество продуктов.
В настоящее время у меня есть очевидные URL-адреса CRUD для управления самим списком желаний:
GET account/wishlists.json
GET account/wishlists/{id}.json
POST account/wishlists.json?name=My%20Wishlist
POST account/wishlists/{id}.json?name=My%20New%20Name
DELETE account/wishlists/{id}.json
Однако я не думаю, что знаю, как структурировать URL-адреса, которые будут добавлять / удалять продукт в список желаний: (
Вот мои текущие варианты:
1) Добавьте продукт как часть URL-адреса и используйте команду HTTP для определения моего action
POST account/wishlist/{id}/product/{product_id}.json
DELETE account/wishlist/{id}/product/{product_id}.json
или
2 ) Сделайте действие как часть URL-адреса, а идентификатор продукта как часть полезной нагрузки
POST account/wishlist/{id}/add.json?product_id={product_id}
POST account/wishlist/{id}/remove.json?product_id={product_id}
(1) - это чистый и, насколько я могу судить, довольно RESTful, но не позволяет легко добавлять несколько продуктов и т. д.
Меня также немного беспокоит использование команды DELETE - я не удаляю продукт или список желаний, я просто удаляю один из другого.
(2) является более явным, но отклоняется от REST - я бы не просто ссылался на ресурс в URL-адресе, я бы имел в виду операцию с этим ресурсом: (
Любые советы по которым из вышеперечисленного было бы правильнее было бы очень кстати! (Если есть третий вариант лучше моего, не стесняйтесь поправлять меня!)