es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Guzzlehttp 7.3 JSON_UNESCAPED_SLASHES no funciona (Lumen/Laravel)

Tengo un problema con una aplicación creada en Lumen y solicitudes Guzzlehttp.

Parece que no puedo pasar opciones como JSON_UNESCAPED_SLASHES cada vez que hago una solicitud:

$response = (new Client())->request($this->typeRequest, $endpoint, $options);

Esto está enviando a mi servidor barras diagonales escapadas (“one\/two”) y causando algunos problemas.

Todo parece estar relacionado con vendor/guzzlehttp/guzzle/src/Client.php en la función applyOptions(), que utiliza jsonEncode y no permite pasar ninguna opción:

$options['body'] = Utils::jsonEncode($options['json']);

Esto se puede solucionar fácilmente colocando la opción en jsonEncode:

$options['body'] = Utils::jsonEncode($options['json'], JSON_UNESCAPED_SLASHES);

El problema aquí es que si actualizo algo con Composer, se sobrescribirá.

¿Cómo puedo resolver un problema como este?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una solución sería crear un paquete personalizado que extienda GuzzleHttp e incluya la opción deseada (JSON_UNESCAPED_SLASHES) en el método jsonEncode. Este paquete personalizado puede ser instalado a través de Composer y utilizado en lugar del paquete original de GuzzleHttp. De esta manera, cualquier actualización a GuzzleHttp a través de Composer no sobrescribirá el paquete personalizado. Otra opción sería bifurcar el repositorio de GuzzleHttp en Github, realizar los cambios necesarios y utilizar el repositorio bifurcado como una dependencia en tu proyecto en lugar del paquete original. Sin embargo, este enfoque puede requerir mantenimiento adicional y puede que no sea la mejor opción a largo plazo.

Comments are closed.