Stiu ca nu am mai scris de mult ceva, asa ca, poate daca am si timpul necesar o sa incerc sa duc la capat o serie de tutoriale nodejs (sails.js), iar in cel mai fericit caz chiar o serie de cursuri nodejs online. Primul tutorial nu va fi unul introductiv ci unul care sa va starneasca curiozitatea si poate chiar sa va uimeasca.
Frameworkul sails prezentat ca si "The web framework of your dreams" ofera o gama larga de avantaje printre care si crearea unui REST API la cheie, si dupa cum am zis si mai sus prin asta as vrea sa va uimesc.
Voi pleca de la premisa ca deja aveti instalat node.js si npm, deci sa trecem la treaba.
Instalare Sails.js
sudo npm -g install sails
sau in cazul in care folositi windows, desi va recomand linux pentru dezvoltare
npm -g install sails
Crearea unui proiect
sails new numeproiect
Pentru a rula proiectul mergeti in directorul nume proiect si rulati comanda :
sails lift
Local.js
Pentru a va configura usor proiectul pentru a dezvolta usor, sails vine cu o multime de configurari care pot fi suprascrie in fisierul local.js, de exemplu conexiunea la baza de date.
Un exemplu de conexiune la o baza de date mysql este
module.exports = { models: { migrate: 'alter', connection: 'localmysql', }, connections: { localmysql: { adapter: 'sails-mysql', host: '127.0.0.1', user: 'root', password: '', database: 'mp' }, }, environment: process.env.NODE_ENV || 'development' };
PS in cazul in care doriti sa folositi mysql trebuie sa instalalti si modlul sails-mysql
npm install sails-mysql --save
Generare API
sails generate api NUME Exemplu: sails generate api user
Dupa generarea api-ului o sa fie creat automat un model si un controler.
1. Modelul
In folderul api/models o sa gasiti fisierul user.js unde trebuie sa definiti structura modelului(cu alte cuvinte tabelul din baza de date) care va crea automat tabelul in baza de date.
Documentatia oficiala a modelelor
Un exemplu simplu pentru user model poate fi
module.exports = { attributes: { username: { type: 'email', required: true }, firstName: { type: 'string' }, lastName: { type: 'string' } } };
Dupa ce o sa dati sails lift din nou in terminal o sa observati in baza de date tabelul user. Chestia tare e ca puteti face insert direct fara a scrie vreo linie de cod. TARE NU?
Exemplu : POST
{ "firstName": "Micul", "lastName" : "Programator", } Raspuns returnat { "firstName": "Micul", "lastName": "Programator", "createdAt": "2015-12-22T07:08:17.223Z", "updatedAt": "2015-12-22T07:08:17.223Z", "id": 1 }
Acum daca accesati url-ul http://localhost:1337/user o sa aveti vedeti lista de utilizatori
[ { firstName: "Micul", lastName: "Programator", id: 1, createdAt: "2015-12-22T07:08:17.000Z", updatedAt: "2015-12-22T07:08:17.000Z" } ]
Exemplu : PUT /user/1
{ "firstName": "Micul", "lastName" : "Programator PUT" } Raspuns { "firstName": "Micul", "lastName": "Programator PUT", "id": 1, "createdAt": "2015-12-22T07:08:17.000Z", "updatedAt": "2015-12-22T07:18:35.000Z" }
Acum daca reacesati http://localhost:1337/user o sa vedeti in lista utilizatorul editat
[ { firstName: "Micul", lastName: "Programator PUT", id: 1, createdAt: "2015-12-22T07:08:17.000Z", updatedAt: "2015-12-22T07:18:35.000Z" } ]
Exemplu DELETE http://localhost:1337/user/1
Iar lista este goala in momentul de fata.
2. Adaugarea sau suprascrierea rutelor
In folderul config este un fisier foarte intuitiv numit routes.js, aici va trebui sa va adaugati noile rute.
Exemplu
module.exports.routes = { /*************************************************************************** * * * Make the view located at `views/homepage.ejs` (or `views/homepage.jade`, * * etc. depending on your default view engine) your home page. * * * * (Alternatively, remove this and add an `index.html` file in your * * `assets` directory) * * * ***************************************************************************/ //USERS 'POST /user': 'UserController.add', //supreascriere 'GET /user/id' : 'UserController.ids', //ruta noua '/': { view: 'homepage' } };
3. Controlerul
Pana in momentul de fata, controlerul este gol, insa dupa adaugarea rutelor trebuie sa adaugam in el doua functii:
1. Una pentru creare user "add"
2. Si una pentru get ids care va returna o lista cu toate id-urile utilizatorilor.
/** * UserController * * @description :: Server-side logic for managing users * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers */ module.exports = { add: function(req, res) { //preluam datele din post var data = req.body; User .create(data) .then(function(user) { return res.ok(user); }) .catch(function(err) { return res.badRequest(err); }) }, ids : function(req, res) { User .find({select: ['id']}) .then(function(user) { return res.ok(user); }) .catch(function(err) { return res.badRequest(err); }) } };
In cazul in care salvati un utilizator (se procedeaza ca mai sus) doar ca acum voi decideti prin functia de add ce salvati iar in cazul in care accesati /user/id o sa vedeti un rezultat ca mai jos, bineinteles daca aveti si utilizatori salvati.
[ { id: 1 }, { id: 2 } ]
Cam atat pentru astazi, sper sa va ajute tutorialul si chiar sa va doriti sa treceti pe sails.js/node si nu ratati urmatoarele articole node.js.
BTW sails este bazat pe express.js, frameworkul din acest articol
-----------------------------------------------
DESCARCA APLICATIA DIN TUTORIAL
-----------------------------------------------