Сохранение сущности со сжатым ответом и запросом клиента в Symfony 7Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Сохранение сущности со сжатым ответом и запросом клиента в Symfony 7

Сообщение Anonymous »

Исходная ситуация
У меня есть приложение на Symfony 7. В этом приложении я делаю внешние вызовы API, для которых у меня определен абстрактный класс HttpClient. В этом классе я использую клиент guzzle для обработки запроса. У меня есть объект для сохранения информации, связанной с внешними вызовами, и я использую Doctrine для взаимодействия с базой данных. Фрагмент объекта приведен ниже:

Код: Выделить всё

#[ORM\Column(name: 'request',type: 'json')]
private array $request;

#[ORM\Column(name: 'response', type: 'json', nullable: true)]
private ?array $response = null;
До сих пор я сохранял запрос и ответ в виде обычного текста. Сжатие запроса, похоже, не создает никаких проблем, а вот сжатие ответа оказалось проблематичным. Ниже приведен фрагмент моего абстрактного класса HttpClient (я удалил части, не имеющие отношения к этому вопросу), где объект создается и сохраняется в базе данных:

Код: Выделить всё

$log = [
'request' => $this->serializer->normalize($request),
];

try {
$response = $this->client->request(
$request->getRequestMethod(),
$request->getUri(),
$this->prepareGuzzleOptions($request)
);
$log['response'] = $this->serializer->decode((string) $response->getBody()->getContents(), 'json');
} catch (GuzzleException $e) {
$log['response'] = $this->serializer->normalize([$e->getMessage(), $e->getTraceAsString()]);
} catch (\Throwable $e) {
$log['response'] = ["exceptionMessage" => $e->getMessage()];
throw $e;
} finally {
$log = $this->serializer->denormalize($log, Log::class);
$this->em->persist($apiLog);
$this->em->flush();
$this->em->clear();
}
Желаемый результат
Из-за места, которое они занимают, я хочу сжать их и сохранить в сжатом виде. Я также хочу иметь возможность распаковать их в инструменте управления базой данных на случай, если мне понадобится устранить какие-либо неполадки.
Предпринятые шаги
Я попробовал изменить тип атрибута как для «blob», так и для «двоичного файла», также пытался поиграть со сжатием запроса, но я не могу преобразовать его в тип «ресурса» и получаю такие ошибки, как: Тип атрибута «запрос» для класса должен быть одним из «ресурс» (дан массив). или Тип атрибута «запрос» для класса должен быть одним из «ресурс» (дана строка).
Я понимаю, в чем проблема, но не могу придумать решение как я могу преобразовать строку в ресурс элегантным и технически значимым способом.
Если потребуется какая-либо дополнительная информация, я с радостью ее предоставлю. Любая помощь будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -symfony-7
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»