Hola. Estoy entrando al mundo de las API's y tratándome de pasar de PHP a JavaScript en el lado del servidor... recibo mucha información de golpe, por lo que a veces hay algunas cosas que se me escapan, como esta.
He visto en webs que da igual que tecnología uses para crear la API, que da igual que tu backend esté en python o php... entonces yo llego a: ¿cómo, si tienes una API hecha en nodejs, como la conectas para que haga peticiones al backend que está hecho en php, u otro lenguaje, pero que sea distinto de node?
Quizás sea una pregunta estúpida, pero no lo entiendo.
No entiendo muy bien tu pregunta. ¿Quieres decir como consumir un servicio REST desde nodejs?. Si es eso, puedes usar el módulo http para hacer peticiones a la API. O si quieres facilitar las cosas, puedes usar restler:
Hola Antonio, gracias por contestar. Seguramente me halla explicado mal.
Por ejemplo, yo tengo una api restful hecha en nodejs y un backend hecho en python. Hasta donde tengo entendido esto es posible. Pero, lo que no entiendo es como la api puede acceder a los datos que son devueltos por el backend que está hecho en python. Supongo que tengo un error muy grande de concepto, pero no encuentro nada "visual" para poder comprender el código y ver como lo hace.
Vamos a ver, supongamos que tu backend está desarrollado en Python y su cometido es desplegar una API REST, ¿Correcto?. Entonces, tu backend expone a través de una petición HTTP su API.
Una API REST es simplemente un servicio web que responde a un verbo HTTP (GET, POST, PUT, DELETE...).
Por lo tanto, si quieres comunicar un sistema con otro, por ejemplo un servidor REST en Python con un cliente Node, este último tendrá que hacer peticiones HTTP al servidor, exactamente igual que las harías con $.ajax en jQuery, $http en Angular o curl desde la línea de comandos.
Como se que me explico fatal, te dejo un enlace que explica los fundamentos:
Voy a empezar por lo básico, porque como dices, puede ser un error de concepto.
Nodejs es un entorno para ejecutar JavaScript en el servidor, es decir, se utiliza principalmente para hacer backends. Puede tener sentido tener parte del backend en nodejs y otra en python, si son dos aplicaciones diferentes, en una puedes tener un servicio con una api rest... y en el otro, otro tipo de servicio y que se comuniquen entre ellos. Pero tal y como lo cuentas, parece que sólo tienes hecho el backend con python... lo cual no tiene mucho sentido. ¿Puedes describir un poco más que estás haciendo? ¿que quieres hacer? ¿que frameworks estás usando?
Vale, lo había entendido mal. La respuesta rápida es que lo suyo es que hagas el backend y el servicio rest en el mismo lenguaje, porque van a compartir código (modelos, conexión con la BBDD, etc), si no, te lo tienes que montar tu la forma de conectarlos. Por ejemplo, puedes hacer que el backend hecho en el lenguaje que quieras, consuma el servicio rest haciendo llamadas GET, POST, UPDATE y DELETE, y que el servicio rest sea el único que tenga acceso a la BBDD.
El caso es que estoy empezando a trabajar tratando de modularizar todo mi codigo y estoy hecho un lio...
El API Rest es parte del backend, no? Es que en todos los esquemas veo que lo ponen como un intermediario entre el frontend y el bakend, pero claro, siempre lo veo dentro.
Luego también tengo problemas con la arquitectura. Hay MVC en el bakend y MVC en el frontend, pero son cosas distintas o es lo mismo?
Yo independizó mi frontend del backend. En javascript consumo datos del api rest y se los paso a mis html renderizados. Imaginemos que uso MVC en el frontend o MVM en angular, backbone o cualquier framework. Si yo soy capaz de modificar datos desde el api rest con put, para que quiero un backend cuando puedo hacer todo con el api rest?
Lo siento, es que estoy perdido con este tema de las apis.
Las peticiones desde el cliente las haces por HTTP Es decir, si quieres hacer una petición por GET haces una llamada ajax de ese tipo a la URL_DE_SERVICIO_REST/SERVICIO?parametro1=aaaa¶metro2=bbbb
El servicio REST te va debe devolver siempre un JSON con la respuesta:
Por ejemplo ante una petición del tipo http://mi_servidor_rest/cliente?id=10 me devolverá un json con los datos del cliente del tipo
{ id:10,nombre:"Luis",apellidos:"Sanchez Garcia", edad:..... }
Si la petición es por otro método POST, PATCH, PUT entonces los datos que van al servidor REST también van en JSON en lugar de llegarle en la URL.
Si el servicio REST los vas a montar en Node,js con express lo tienes más que resuelto, hay mil ejemplos por ahí.
Si lo vas a montar con PHP hay pequeños frameworks como SLIM Framework que te van a hacer la vida mas sencilla.
He visto en webs que da igual que tecnología uses para crear la API, que da igual que tu backend esté en python o php... entonces yo llego a: ¿cómo, si tienes una API hecha en nodejs, como la conectas para que haga peticiones al backend que está hecho en php, u otro lenguaje, pero que sea distinto de node?
Quizás sea una pregunta estúpida, pero no lo entiendo.
Saludos
08/08/2015 12:42
https://github.com/danwrong/restler
08/08/2015 12:50
Por ejemplo, yo tengo una api restful hecha en nodejs y un backend hecho en python. Hasta donde tengo entendido esto es posible. Pero, lo que no entiendo es como la api puede acceder a los datos que son devueltos por el backend que está hecho en python. Supongo que tengo un error muy grande de concepto, pero no encuentro nada "visual" para poder comprender el código y ver como lo hace.
Saludos.
08/08/2015 14:29
Una API REST es simplemente un servicio web que responde a un verbo HTTP (GET, POST, PUT, DELETE...).
Por lo tanto, si quieres comunicar un sistema con otro, por ejemplo un servidor REST en Python con un cliente Node, este último tendrá que hacer peticiones HTTP al servidor, exactamente igual que las harías con $.ajax en jQuery, $http en Angular o curl desde la línea de comandos.
Como se que me explico fatal, te dejo un enlace que explica los fundamentos:
http://gausswebapp.com/arquitectura-rest.html
12/08/2015 12:59
Nodejs es un entorno para ejecutar JavaScript en el servidor, es decir, se utiliza principalmente para hacer backends. Puede tener sentido tener parte del backend en nodejs y otra en python, si son dos aplicaciones diferentes, en una puedes tener un servicio con una api rest... y en el otro, otro tipo de servicio y que se comuniquen entre ellos. Pero tal y como lo cuentas, parece que sólo tienes hecho el backend con python... lo cual no tiene mucho sentido. ¿Puedes describir un poco más que estás haciendo? ¿que quieres hacer? ¿que frameworks estás usando?
12/08/2015 13:11
12/08/2015 17:20
El API Rest es parte del backend, no? Es que en todos los esquemas veo que lo ponen como un intermediario entre el frontend y el bakend, pero claro, siempre lo veo dentro.
Luego también tengo problemas con la arquitectura. Hay MVC en el bakend y MVC en el frontend, pero son cosas distintas o es lo mismo?
Yo independizó mi frontend del backend. En javascript consumo datos del api rest y se los paso a mis html renderizados. Imaginemos que uso MVC en el frontend o MVM en angular, backbone o cualquier framework. Si yo soy capaz de modificar datos desde el api rest con put, para que quiero un backend cuando puedo hacer todo con el api rest?
Lo siento, es que estoy perdido con este tema de las apis.
11/08/2015 08:39
28/02/2018 11:49
El servicio REST te va debe devolver siempre un JSON con la respuesta:
Por ejemplo ante una petición del tipo http://mi_servidor_rest/cliente?id=10 me devolverá un json con los datos del cliente del tipo
{ id:10,nombre:"Luis",apellidos:"Sanchez Garcia", edad:..... }
Si la petición es por otro método POST, PATCH, PUT entonces los datos que van al servidor REST también van en JSON en lugar de llegarle en la URL.
Si el servicio REST los vas a montar en Node,js con express lo tienes más que resuelto, hay mil ejemplos por ahí.
Si lo vas a montar con PHP hay pequeños frameworks como SLIM Framework que te van a hacer la vida mas sencilla.