Tutorial REST API la cheie cu sails.js

Post Title

       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

  1.  
  2. sudo npm -g install sails

sau in cazul in care folositi windows, desi va recomand linux pentru dezvoltare 

  1.  
  2. npm -g install sails

Crearea unui proiect 

  1.  
  2. sails new numeproiect

Pentru a rula proiectul mergeti in directorul nume proiect si rulati comanda :

  1.  
  2. 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 

  1.  
  2. module.exports = {
  3. models: {
  4. migrate: 'alter',
  5. connection: 'localmysql',
  6. },
  7. connections: {
  8. localmysql: {
  9. adapter: 'sails-mysql',
  10. host: '127.0.0.1',
  11. user: 'root',
  12. password: '',
  13. database: 'mp'
  14. },
  15. },
  16. environment: process.env.NODE_ENV || 'development'
  17. };

 

PS in cazul in care doriti sa folositi mysql trebuie sa instalalti si modlul sails-mysql

  1.  
  2. npm install sails-mysql --save

Generare API

  1.  
  2. sails generate api NUME
  3.  
  4. Exemplu:
  5.  
  6. 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 

  1.  
  2. module.exports = {
  3.  
  4. attributes: {
  5. username: {
  6. type: 'email',
  7. required: true
  8. },
  9. firstName: {
  10. type: 'string'
  11. },
  12. lastName: {
  13. type: 'string'
  14. }
  15. }
  16. };
  17.  
  18.  

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

  1.  
  2.  
  3. {
  4. "username": "[email protected]",
  5. "firstName": "Micul",
  6. "lastName" : "Programator",
  7. }
  8.  
  9. Raspuns returnat
  10.  
  11. {
  12. "username": "[email protected]",
  13. "firstName": "Micul",
  14. "lastName": "Programator",
  15. "createdAt": "2015-12-22T07:08:17.223Z",
  16. "updatedAt": "2015-12-22T07:08:17.223Z",
  17. "id": 1
  18. }

Acum daca accesati url-ul http://localhost:1337/user o sa aveti vedeti lista de utilizatori 

  1.  
  2. [
  3. {
  4. username: "[email protected]",
  5. firstName: "Micul",
  6. lastName: "Programator",
  7. id: 1,
  8. createdAt: "2015-12-22T07:08:17.000Z",
  9. updatedAt: "2015-12-22T07:08:17.000Z"
  10. }
  11. ]

Exemplu : PUT /user/1

  1.  
  2. {
  3. "username": "[email protected]",
  4. "firstName": "Micul",
  5. "lastName" : "Programator PUT"
  6. }
  7.  
  8. Raspuns
  9.  
  10. {
  11. "username": "[email protected]",
  12. "firstName": "Micul",
  13. "lastName": "Programator PUT",
  14. "id": 1,
  15. "createdAt": "2015-12-22T07:08:17.000Z",
  16. "updatedAt": "2015-12-22T07:18:35.000Z"
  17. }

Acum daca reacesati http://localhost:1337/user o sa vedeti in lista utilizatorul editat

  1.  
  2. [
  3. {
  4. username: "[email protected]",
  5. firstName: "Micul",
  6. lastName: "Programator PUT",
  7. id: 1,
  8. createdAt: "2015-12-22T07:08:17.000Z",
  9. updatedAt: "2015-12-22T07:18:35.000Z"
  10. }
  11. ]

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

  1.  
  2. module.exports.routes = {
  3.  
  4. /***************************************************************************
  5.   * *
  6.   * Make the view located at `views/homepage.ejs` (or `views/homepage.jade`, *
  7.   * etc. depending on your default view engine) your home page. *
  8.   * *
  9.   * (Alternatively, remove this and add an `index.html` file in your *
  10.   * `assets` directory) *
  11.   * *
  12.   ***************************************************************************/
  13. //USERS
  14.  
  15. 'POST /user': 'UserController.add', //supreascriere
  16. 'GET /user/id' : 'UserController.ids', //ruta noua
  17.  
  18. '/': {
  19. view: 'homepage'
  20. }
  21.  
  22. };
  23.  

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.

 

  1.  
  2. /**
  3.  * UserController
  4.  *
  5.  * @description :: Server-side logic for managing users
  6.  * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers
  7.  */
  8.  
  9. module.exports = {
  10.  
  11. add: function(req, res) {
  12.  
  13. //preluam datele din post
  14. var data = req.body;
  15.  
  16. User
  17. .create(data)
  18. .then(function(user) {
  19. return res.ok(user);
  20. })
  21. .catch(function(err) {
  22. return res.badRequest(err);
  23. })
  24.  
  25.  
  26. },
  27. ids : function(req, res) {
  28.  
  29. User
  30. .find({select: ['id']})
  31. .then(function(user) {
  32. return res.ok(user);
  33. })
  34. .catch(function(err) {
  35. return res.badRequest(err);
  36. })
  37. }
  38. };
  39.  

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.

  1.  
  2. [
  3. {
  4. id: 1
  5. },
  6. {
  7. id: 2
  8. }
  9. ]

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

-----------------------------------------------

Autor articol
Ştiinţa fără religie este şchioapă, religia fără ştiinţă este oarbă (Albert Einstein)

Structura de aplicatie Angular.js
 

Articolul anterior


Acest articol nu este comentat, fii primul care o face

Trebuie sa fii logat sa poti lasa un comentariu Autentificare Inregistrare Logare cu Facebook
top