Salesforce Commerce Cloud - добавьте подзапрос поиска в пакетном OCAPI
Я связываюсь, чтобы написать пакет OCAPI.
В одном из подзапросов я хотел бы использовать OCAPI product_search и option_search.
Все настройки в песочнице верны, два OCAPI работают отлично, если я использую их отдельно.
Я получаю сообщение об ошибке, только если я использую их в партии.
Вот моя просьба:
POST /s/-/dw/batch?client_id=xxx HTTP/1.1
Host: xxx-alliance-prtnr-eu09-dw.demandware.net
Content-Type: multipart/mixed; boundary=23dh3f9f4
Authorization: Bearer xxx
--23dh3f9f4
x-dw-content-id: req4
x-dw-http-method: POST
x-dw-resource-path-extension: /s/-/dw/data/v18_8/product_search
{
"query" : {
"text_query": {
"fields": ["id"],
"search_phrase": "73910432"
}
},
"select" : "(hits.(product_id))"
}
--23dh3f9f4
x-dw-http-method: POST
x-dw-content-id: req3
x-dw-resource-path: /s/-/dw/data/v18_8/products/
x-dw-resource-path-extension: 73910432/variant_search
{
"query": {
"text_query": {
"fields": [
"variation_attribute.size"
],
"search_phrase": "34"
}
},
"select": "(hits.(product_id,variation_values))"
}
--23dh3f9f4--
Ответ с сервера:
--23dh3f9f4
x-dw-content-id: req4
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Content-Length: 95
Cache-Control: no-cache
x-dw-status-code: 500
{"_v":"18.8","fault":{"type":"InternalServerErrorException","message":"Internal Server Error"}}
--23dh3f9f4
x-dw-content-id: req3
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Content-Length: 215
Cache-Control: no-cache
x-dw-status-code: 400
{"_v":"18.8","fault":{"arguments":{"parameter":"Body"},"type":"NullConstraintViolationException","message":"The null value constraint for parameter 'Body' is violated. Null is not allowed. Please provide a value."}}
--23dh3f9f4--
Любая идея?
Спасибо за часовую помощь,
0 ответов
Для подзапроса 'req4'
Вероятно, это связано с неправильным использованием заголовков пути. Вы должны иметь следующее в своей главной (/batch
запрос) заголовок:
x-dw-resource-path: /s/-/dw/data/v18_8/
Тогда в заголовках req4 у вас будет:
x-dw-resource-path-extension: product_search
Аналогично, в req3 у вас должен быть следующий заголовок:
x-dw-resource-path-extension: products/73910432/variant_search
Обратите внимание, что вам не нужно включать x-dw-resource-path
в пакетных заголовках подзапроса. Только в основном /batch
заголовок запроса. в моем примере выше, вы можете увидеть, что path
Я указал на batch
Уровень запроса является общим для всех подзапросов. Поэтому мне нужно только указать путь к ресурсу подзапроса. Тем не менее, если вы хотите группировать витрины и запросы данных, вам может потребоваться переопределить базовый путь для переключения между сайтами или ресурсами магазина.
Анализ вашего примера приводит к следующим двум URI запроса:
req4
Этот может никуда не идти, потому что вы на самом деле не указали x-dw-resource-path
по этому запросу. Я могу только предположить, что вы в конечном итоге что-то вроде:
null/s/-/dw/data/v18_8/product_search
req3
/s/-/dw/data/v18_8/products/73910432/variant_search
За ошибку в req3 (скорее всего оба)
Похоже, что это может быть связано с неправильным запросом. Я вижу, что между последним символом есть два конца строки }
и граница в обоих запросах. Попробуйте свести это только к одному концу строки и посмотрите, поможет ли это.