He estado escribiendo una API usando Symfony como backend, un complemento escrito por un tercero envía ciertos datos a un endpoint, el endpoint debe devolver una respuesta codificada en json, sin embargo, siguiendo las instrucciones que se establecen en la documentación actual de Symfony ( https://symfony.com/doc/current/components/http_foundation.html ) el valor de retorno se muestra dos veces y la respuesta no está bien formada y los resultados son como una cadena
El método original que escribí tenía llamadas a una base de datos para validar un token, almacenar un marcador y mostrar el resultado del proceso de backend, sin embargo, al llegar a las tachuelas y eliminar todo menos la construcción de respuesta; es obvio que aquí es donde radica el problema. El método usa este fragmento, aunque para mayor claridad no he incluido el procesamiento de la base de datos y usé los valores publicados como la matriz de retorno, el resultado es el mismo si es la publicación o los datos procesados, la salida se muestra dos veces.
$token = $request->request->get('token');
$bookmark = $request->request->get('bookmark');
$data = ['token' => $token, 'bookmark' => $bookmark];
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->setContent(json_encode($data));
$response->send();
return $response;
Lo que esperaba era una única respuesta json, pero lo que se devuelve es una cadena doble de la salida json
por ejemplo, si publiqué estos valores en el fragmento anterior:
token: ksjdbvqpi8e7rqp7evbprb
bookmark: http://www.google.com
el resultado devuelto es
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
cuando lo que esperaba era solo
{"token":"ksjdbvqpi8e7rqp7evbprb", "bookmark":"http:\/\/www.google.com"}
No tengo idea en este momento por qué se muestra dos veces, cualquier ayuda es como siempre agradecida.
Gracias
$response->send();
es la línea que debe eliminarse.
Como ya devolviste el objeto de la clase, Response
Symfony se encargará de enviar esta respuesta al navegador, no necesitas hacerlo manualmente con send()
.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras