Формирование API запросов в PHP (Laravel)
В данный на Laravel нужно написать сервис для управления запросами к Яндекс Маркет API. Но что-то пошло не так.
С сайта https://www.dev-notes.ru/articles/laravel/simplifying-api-integration-with-laravels-http-facade/ взял способ отправки запросов. Класс ApiClient наследовал в классе YandexApiClient, а ApiRequest оставил без изменений.
Вот класс YandexApiClient:
class YandexApiClient
extends ApiClient
{
protected const BASE_URL = 'https://api.partner.market.yandex.ru';
public const AUTH_CONFIG = 'api.yandex';
protected string $token = '';
public function __construct(string $warehouseIndex)
{
$objCity = City::where('index', $warehouseIndex)->firstOrFail();
$this->initToken($objCity->id);
}
protected function initToken(string $warehouseID): void
{
$this->token = config(config_key([self::AUTH_CONFIG, $warehouseID, 'token']));
}
protected function authorize(PendingRequest $request): PendingRequest
{
return $request->withHeader('Api-Key', $this->token);
}
}
И если попытаться получить дерево категорий (https://yandex.ru/dev/market/partner-api/doc/ru/reference/categories/getCategoriesTree) как указано ниже:
$apiClient = new \YandexApiClient('...');
$apiRequest = \ApiRequest::post('/categories/tree');
dd($apiClient->send($apiRequest)->json());
то возвращается ошибка 400:
При этом если добавить любое значение для тела запроса даже если таких параметров нет в методе:
$apiClient = new \YandexApiClient('...');
$apiRequest = \ApiRequest::post('/categories/tree')->setBody(['l' => 's']);
dd($apiClient->send($apiRequest)->json());
то ответ приходит 200:
Здесь (https://yandex.ru/dev/market/partner-api/doc/ru/concepts/input-format) явно указаны случаи, при которых может приходить данная ошибка, но я не понимаю, что не так с тем, что будет отправлен пустой массив вместо непустого.
Внимание, вопрос: почему в запросе есть проблемы с передаваемыми данными? Почему проблему может решить любой непустой массив структуры "ключ-значение" в теле запроса?