Open the-toxic opened 6 years ago
Нашел еще косяк /api/config/main.php -> urlManager
'PUT shop/cart/<id:\d+>/quantity' => 'shop/cart/quantity',
'DELETE shop/cart/<id:\d+>' => 'shop/cart/delete',
В виде id передается хеш а не число, поэтому запросы не работают /shop/cart/bad8c4faf77954d48f3714e82860d622
Нужно писать <id:\w+>
И еще вопрос, как добавить количество по этому запросу?
'PUT shop/cart/<id:\w+>/quantity' => 'shop/cart/quantity'
Я так понял по коду ниже постом надо передавать quantity=99
$this->service->set($id, (int)Yii::$app->request->post('quantity'));
А как передавать постом если тип запроса PUT? :)
По поводу куки я делал так:
'request' => [
'enableCookieValidation' => false,
]
PUT и POST - почитай чем они отличаются :)
@hijackfl Про теорию подхода я знаю. Меня интересует конкретная реализация. Как нужно составить запрос для изменения кол-ва товара в корзине? Пишу PUT shop/cart/bad8c4faf77954d48f3714e82860d622/quantity и кол-во сбрасывается на 0
В body отправляешь quantity=1. От POST ничем не отличается. Вот пример curl из swagger'a:
curl -X PUT "http://api.your-site.com/shop/cart/9bc317d08c9ed25086ee8a4a305c577e/quantity" -H "accept: application/json" -H "Authorization: Bearer 888b97f6f9f985f88ce1769cc647738a1e6a9c90" -H "Content-Type: application/x-www-form-urlencoded" -d "quantity=3"
Ну, конечно, еще urlManager и swagger нужно подправить(issue по этому я уже сделал)
@hijackfl Спасибо, я не в то окно в phpStorm-rest test вставлял тело запроса) Разобрался и с модификациями и с количеством
И к слову quantity не должно сбрасываться на 0. Это тоже надо подправить.
Дмитрий, на уроке добавления гибридного стораджа вы сказали, что это уберет проблему с проверкой корзины в куках. Но в момент проверки есть ли в куках корзина, чтобы в последствии перекинуть ее в БД, она все равно лезет в куки . HybridStorage.php - проверка: if ($cookieItems = $cookieStorage->load()) {}
Как лучше поступить в данной ситуации? Временно решил доп. проверкой if (Yii::$app->request->cookieValidationKey && $cookieItems = $cookieStorage->load()) {}
И еще вопрос. Как в API добавлять товары с модификациями в корзину? Пишет: Необходимо заполнить «Modification»