Android, Heroku, Node.js para publicar un WebService REST
En el post anterior vimos como abrir una cuenta en heroku, que nos permite tener una plataforma gratuita para publicar servicios web, lo cual nos habilita a crear un backend para desarrollo. El lenguaje que elegimos en Node.js aunque también nos ofrece Java, Rubi y varios mas
En este post, vamos a continuar los ejemplos que configuramos y vamos a crear una sencilla API REST que publicará en Node.js un listado de productos.
Aclaración:
En este post no utilizaremos una base de datos (por ejemplo MongoDB) detrás de Node.js
Esto lo realizaremos en un post posterior, donde exploraremos con instalarla localmente y en el servidor. Para los que quieran
En este post, vamos a continuar los ejemplos que configuramos y vamos a crear una sencilla API REST que publicará en Node.js un listado de productos.
Aclaración:
En este post no utilizaremos una base de datos (por ejemplo MongoDB) detrás de Node.js
Esto lo realizaremos en un post posterior, donde exploraremos con instalarla localmente y en el servidor. Para los que quieran
- (http://brew.sh/)
- (http://www.mongodbspain.com/es/2014/11/06/install-mongodb-on-mac-os-x-yosemite/
- (https://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/)
Comencemos
Paso 01: Nuestros recursos
Creamos el código para tres productos en Node.js, el FrontEnd es una aplicación en Android y contiene la clase producto:
public class Producto {
private int id;
private String description;
private double price;
private String image;
public Producto(){ }
// Getter y Setter
}
Tenemos las siguientes imágenes subidas al servidor Heroku:
Que son las figuras de las piezas de Ajedrez, juego que amo:
Repasemos como subimos estas imagen desde Local (PC) a Remoto (Heroku) con Git:
Con este paso concluimos la creación de una API REST, algunos de los recursos son:
La intención es dejar la API pública para consumirla desde un dispositivo Android
- https://infinite-lowlands-19433.herokuapp.com/images/Pieza01_rey.png
- https://infinite-lowlands-19433.herokuapp.com/images/Pieza02_dama.png
- https://infinite-lowlands-19433.herokuapp.com/images/Pieza03_torre.gif
- https://infinite-lowlands-19433.herokuapp.com/images/Pieza04_alfil.gif
- https://infinite-lowlands-19433.herokuapp.com/images/Pieza05_caballo.gif
- https://infinite-lowlands-19433.herokuapp.com/images/Pieza06_peon.gif
Que son las figuras de las piezas de Ajedrez, juego que amo:
Repasemos como subimos estas imagen desde Local (PC) a Remoto (Heroku) con Git:
MacBook-Pro-de-Pablo:node-js-getting-started pabloin$ pwd
/Users/pabloin/Desktop/_tmpAndroid/_heroku/node-js-getting-started
MacBook-Pro-de-Pablo:node-js-getting-started pabloin$ git commit -m "Agrego imagenes de ajedrez"
[master 70bc0ab] Agrego imagenes de ajedrez
7 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 public/images/Pieza01_rey.png
create mode 100644 public/images/Pieza02_dama.png
create mode 100644 public/images/Pieza03_torre.gif
create mode 100644 public/images/Pieza04_alfil.gif
create mode 100644 public/images/Pieza05_caballo.gif
create mode 100644 public/images/Pieza06_peon.gif
MacBook-Pro-de-Pablo:node-js-getting-started pabloin$ git push heroic master
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
..
remote: Verifying deploy.... done.
To https://git.heroku.com/infinite-lowlands-19433.git
f2abe98..70bc0ab master -> master
MacBook-Pro-de-Pablo:node-js-getting-started pabloin$ git push heroku master
MacBook-Pro-de-Pablo:node-js-getting-started pabloin$ heroku local
[WARN] No ENV file found
[OKAY] Trimming display Output to 121 Columns
12:24:35 AM web.1 | Node app is running on port 5000
Paso 02: Creamos la API
Creamos la API REST:
- https://infinite-lowlands-19433.herokuapp.com/chess/api/productos
Y para definir un Json sencillo, con Node.js creamos:
// - http://localhost:5000/chess/api/chess
// - http://localhost:5000/chess/api/chess/dama
// - http://localhost:5000/chess/api/chess/caballo
//
// - https://infinite-lowlands-19433.herokuapp.com/chess/api/chess
// - https://infinite-lowlands-19433.herokuapp.com/chess/api/chess/dama
// - https://infinite-lowlands-19433.herokuapp.com/chess/api/chess/caballo
//
var chess =
[
{"id":1,"description":"Rey ","image":"https:\/\/infinite-lowlands-19433.herokuapp.com\/images\/Pieza01_rey.png", "price":100},
{"id":2,"description":"Dama ","image":"https:\/\/infinite-lowlands-19433.herokuapp.com\/images\/Pieza02_dama.png", "price":9},
{"id":3,"description":"Torre ","image":"https:\/\/infinite-lowlands-19433.herokuapp.com\/images\/Pieza03_torre.gif", "price":5},
{"id":4,"description":"Alfil ","image":"https:\/\/infinite-lowlands-19433.herokuapp.com\/images\/Pieza04_alfil.gif", "price":3},
{"id":5,"description":"Caballo ","image":"https:\/\/infinite-lowlands-19433.herokuapp.com\/images\/Pieza05_caballo.gif", "price":3},
{"id":6,"description":"Peón ","image":"https:\/\/infinite-lowlands-19433.herokuapp.com\/images\/Pieza06_peon.gif", "price":1}
];
app.get('/chess/api/chess', function(req, res){ res.json(chess); });
app.get('/chess/api/chess/rey', function(req, res){ res.json(chess[0]); });
app.get('/chess/api/chess/dama', function(req, res){ res.json(chess[1]); });
app.get('/chess/api/chess/torre', function(req, res){ res.json(chess[2]); });
app.get('/chess/api/chess/alfil', function(req, res){ res.json(chess[3]); });
app.get('/chess/api/chess/caballo', function(req, res){ res.json(chess[4]); });
app.get('/chess/api/chess/peon', function(req, res){ res.json(chess[5]); });
Con este paso concluimos la creación de una API REST, algunos de los recursos son:
- https://infinite-lowlands-19433.herokuapp.com/chess/api/chess
- https://infinite-lowlands-19433.herokuapp.com/chess/api/chess/dama
- https://infinite-lowlands-19433.herokuapp.com/chess/api/chess/caballo
La intención es dejar la API pública para consumirla desde un dispositivo Android
ToDo - Próximo Paso:
En el siguiente Post, escribiremos una API que en vez de imágenes de las piezas de Ajedrez, nos entregue ejercicios de táctica de ajedrez (Mate en 1, en 2, etc) con un JSON donde tendremos las imágenes, la posición FEN y la solución
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home