Совет по структуре URL-адресов REST

Я пытаюсь завершить работу над спокойной структурой 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-адресе, я бы имел в виду операцию с этим ресурсом: (

Любые советы по которым из вышеперечисленного было бы правильнее было бы очень кстати! (Если есть третий вариант лучше моего, не стесняйтесь поправлять меня!)

9
задан deanWombourne 18 August 2011 в 14:21
поделиться