Я использую Guzzle6 во вкусе PSR7, потому что он прекрасно интегрируется с аутентификацией Hawk. Теперь у меня проблемы с добавлением тела к запросу.
private function makeApiRequest(Instructor $instructor): ResponseInterface
{
$startDate = (new CarbonImmutable('00:00:00'))->toIso8601ZuluString();
$endDate = (new CarbonImmutable('00:00:00'))->addMonths(6)->toIso8601ZuluString();
$instructorEmail = $instructor->getEmail();
$body = [
'skip' => 0,
'limit' => 0,
'filter' => [
'assignedTo:user._id' => ['email' => $instructorEmail],
'start' => ['$gte' => $startDate],
'end' => ['$lte' => $endDate],
],
'relations' => ['reasonId']
];
$request = $this->messageFactory->createRequest(
'POST',
'https://app.absence.io/api/v2/absences',
[
'content_type' => 'application/json'
],
json_encode($body)
);
$authentication = new HawkAuthentication();
$request = $authentication->authenticate($request);
return $this->client->sendRequest($request);
}
Когда я var_dump
переменная $request
, я не вижу тела внутри запроса. Это подтверждается тем фактом, что API отвечает так, как если бы тело не было отправлено. Я перепроверил это в Почтальоне. Как видите, в теле указаны фильтры и нумерация страниц, поэтому легко увидеть, что полученные результаты на самом деле не фильтруются.
Тот же запрос в Почтальоне (с телом) работает без нареканий.
Поскольку параметр может быть типа StreamInterface
, я создал поток и передал ему тело. Тоже не сработало.