2016-11-25 1 views
1

Я начал разрабатывать метод addToCart в качестве HTTP POST в моем RESTful API. Это выглядит хорошо, когда клиент впервые добавляет в корзину продукт (POST создает новую запись на сервере). Но одно и то же правило HTTP ломается, когда клиент просматривает сайт и снова добавляет тот же элемент; где нам не следует создавать новую запись, но только обновлять количество существующего элемента.Какой HTTP-метод использовать для RESTful api для «добавить в корзину» существующий элемент уже в корзине?

Не используете POST для обновления ресурса неправильно? Каким образом это реализовать? или как интерпретировать эту ситуацию.

Примечание: Клиент/пользовательский интерфейс, который использует мой api, не помнит, если он уже существует на сервере. Пожалуйста, рассмотрите приложение addtocart приложения электронной торговли в качестве примера.

+0

Почему бы просто не проверить, есть ли в корзине уже тот же товар, а затем, если он есть, обновите его , в противном случае добавьте новый. – Veki

+0

Я могу сделать это на том же POST. Но, не будет ли это нарушением метода HTTP POST, как заявляет спецификация POST, создает запись на сервере для каждого запроса POST? –

ответ

0

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

Когда вы добавляете товар в корзину, вы создаете новый объект (элемент)? Или вы изменяете существующий элемент (корзину)? Для меня имеет смысл сказать последнее. POSTing элемент кажется, что он должен быть зарезервирован для другой ситуации, когда вы добавляете новый элемент в свой магазин.

Концептуально, тележка тогда похожа на вектор всех предметов в вашем магазине, связанных с числом (0 для почти всех). Добавление чего-то в корзину означает увеличение этого числа для одного из элементов, независимо от того, уже ли оно больше 0.

+0

спасибо jwg. вы показали мне, как выглядеть с разных сторон. это помогает мне. –

0

Вы можете использовать PATCH для отправки объекта детали/обновления существующего объекта.

+0

Клиент/пользовательский интерфейс, использующий мой сервис RESTful, не будет знать, находится ли продукт уже в корзине. Как с этим бороться? –

+0

Наверняка вы отправляете идентификатор продукта? API определит, нужно ли добавлять или обновлять число ... – Stuart

+0

Да. Согласно спецификации POST для добавления, а PATCH - для частичного обновления. Не будет ли обновление количества по методу POST нарушением согласно спецификации? –

0

Он основан на вашей модели. ИМХО POST также прекрасен, если вы моделируете новое намерение или операцию с ним, что может быть в основном что угодно.

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