Duda API REST - la forma correcta
Publicado por Adrián (2 intervenciones) el 25/02/2019 10:53:03
Muy buenas a todos,
Espero que alguien pueda arrojarme algo de luz, os cuento un poco mi tesitura:
Estoy desarrollando una API REST en PHP con el framework SLIM, la verdad es que el framework es ligero y me esta funcionando muy bien.
Estoy desarrollando el API de forma que llamadas y respuestas viajen en formato JSON, y me gustaría seguir los estándares en cuanto a las peticiones, es decir:
GET:
Solicitar información del API
POST:
Crear nuevos registros
PUT:
Actualizar por completo un registro existente (Pisar)
PATCH:
Modificar parte de un registro existente
Etc...
El problema llega cuando quiero obtener información enviando filtros, por lo que he leído (corregidme por favor si me equivoco) las peticiones GET solo tienen cabecera y al parecer es un conflicto a la hora de enviar el "data" JSON...
Las peticiones las hago via AJAX (PostMan es capaz de enviar el JSON mediante GET sin problemas) pero cuando quise interactuar con el API desde WEB me fije en que las llamadas incluían las variables en la URL (Sí... no se me ha olvidado que estoy haciendo una llamada GET), pero al hacerlo el data es codificando y no se sí está "rompiendo" el JSON.
Os pongo un ejemplo de lo que se envía cuando cotilleamos desde el depurador del navegador:
Esta es la URL final a la que llama:
https:api/filterJobs?{%22list%22:%22myTasks%22}
Pero a pesar de eso, el QueryString que muestra es el siguiente:
{"list":"myTasks"}:
He probado a pasarle al JSON funciones de URLEncode, pero no parece que fueran por ahí los tiros... Ya que la respuesta es de que no recibe los parámetros... Estoy bastante seguro de que es por como recojo la información en el back, utilizo una función de phpSlim
Y si GET no lleva body, ahí no encontrará nada...
¿La solución parece sencilla no? Modificar en el back la recogida de datos para las peticiones GET... Pero no encuentro información que me confirme esto...
¿Es así como realmente se hace? ¿No hay alguna solución alternativa donde se pueda montar una petición AJAX web con un "data" JSON igual que llega a hacer PostMan?
Sí alguien tiene experiencia con API REST o llega a un razonamiento que le parezca correcto me vendría bien el punto de vista para salir de dudas
.
Un saludo!
Espero que alguien pueda arrojarme algo de luz, os cuento un poco mi tesitura:
Estoy desarrollando una API REST en PHP con el framework SLIM, la verdad es que el framework es ligero y me esta funcionando muy bien.
Estoy desarrollando el API de forma que llamadas y respuestas viajen en formato JSON, y me gustaría seguir los estándares en cuanto a las peticiones, es decir:
Solicitar información del API
POST:
Crear nuevos registros
PUT:
Actualizar por completo un registro existente (Pisar)
PATCH:
Modificar parte de un registro existente
Etc...
El problema llega cuando quiero obtener información enviando filtros, por lo que he leído (corregidme por favor si me equivoco) las peticiones GET solo tienen cabecera y al parecer es un conflicto a la hora de enviar el "data" JSON...
Las peticiones las hago via AJAX (PostMan es capaz de enviar el JSON mediante GET sin problemas) pero cuando quise interactuar con el API desde WEB me fije en que las llamadas incluían las variables en la URL (Sí... no se me ha olvidado que estoy haciendo una llamada GET), pero al hacerlo el data es codificando y no se sí está "rompiendo" el JSON.
Os pongo un ejemplo de lo que se envía cuando cotilleamos desde el depurador del navegador:
Esta es la URL final a la que llama:
Pero a pesar de eso, el QueryString que muestra es el siguiente:
He probado a pasarle al JSON funciones de URLEncode, pero no parece que fueran por ahí los tiros... Ya que la respuesta es de que no recibe los parámetros... Estoy bastante seguro de que es por como recojo la información en el back, utilizo una función de phpSlim
1
"$request->getParsedBody();"
Y si GET no lleva body, ahí no encontrará nada...
¿La solución parece sencilla no? Modificar en el back la recogida de datos para las peticiones GET... Pero no encuentro información que me confirme esto...
¿Es así como realmente se hace? ¿No hay alguna solución alternativa donde se pueda montar una petición AJAX web con un "data" JSON igual que llega a hacer PostMan?
Sí alguien tiene experiencia con API REST o llega a un razonamiento que le parezca correcto me vendría bien el punto de vista para salir de dudas

Un saludo!
Valora esta pregunta


0