Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Loopback Framework for Developing REST API with Node.js

Loopback Framework for Developing REST API with Node.js

Andi N. Dirgantara

March 26, 2017
Tweet

More Decks by Andi N. Dirgantara

Other Decks in Programming

Transcript

  1. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ _
  2. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ whoami _
  3. PART 1 { “name”: “Marudi Tri Subakti”, “phone”: “(+62) 85646628435”,

    “email”: “[email protected]”, “works”:[ { “company”: “PT Musica Studio’s”, “role”: “Web Developer”, }, { “company”: “Tebengan ID”, “role”: “Web Developer” } ] }
  4. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ whoami marudits@dev-circle-mlg:~$ man –k ‘REST API’ _
  5. What is? • Put it simply, REST = REpresentational State

    Transfer , is an architectural style define to help create and organize distributed system. • It is not a guideline, not a standard, or anything that would imply that there are set a hard of rule to follow 3 PART 2 1 • There is no Request for Comments (RFC), which can leads to a widespread incomplete REST ideal • But have set of contraints to define uniform interface: Client-Server, Stateless, Cacheable, Uniform Interface, Layered System, Code-on-Demand
  6. Why? • Performance, communication style is meant to be efficient

    and simple 3 PART 2 1 • Scalability, simple interaction greatly allow to handle heavy interaction • Modifiability, separation of concerns allow to minimize risk • Portability, can be implemented and consumed by many type of technology • Reliability, allows for the easier recovery of system after failure
  7. How it works? (Resources) • Representations 3 PART 2 1

    • Identifier • Metadata • Control Data
  8. How it works? (Resources) • Representations, it can be any

    way of representing data (binary, JSON, XML, etc) 3 PART 2 1 • Identifier • Metadata • Control Data
  9. How it works? (Resources) • Representations 3 PART 2 1

    • Identifier, a URL that retrieves only one specific resource at any given time • Metadata • Control Data
  10. How it works? (Resources) • Representations 3 PART 2 1

    • Identifier • Metadata, Content-type, last-modified time, and so forth • Control Data, is-modifiable-since, cache-control
  11. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ whoami marudits@dev-circle-mlg:~$ man –k ‘REST API’ marudits@dev-circle-mlg:~$ lb --help _
  12. PART 3 4 2 What is? • LoopBack framework is

    a set of Node.js modules that you can use independently or together to quickly build REST APIs • Interacts with data sources through the LoopBack model API, available locally within Node.js, remotely over REST, and via native client APIs for iOS, Android, and HTML5 • Apps can query databases, store data, upload files, send emails, create push notifications, register users, and perform other actions provided by data sources and services. Introduction
  13. • Create dynamic end-to-end REST APIs with little or no

    coding PART 3 4 2 Why we use? • Access data from various data source: major relational databases, MongoDB, SOAP and REST APIs • Incorporate model relationships and access controls for complex APIs • Separable components for file storage, third-party login, and OAuth 2.0 • MIT open-source license
  14. PART 3 4 2 Why we use? Loopback Express Sails

    Meteor Type API Framework HTTP server library Web MVC framework Full-stack JavaScript app platform Top Features Enterprise connectivity, API Explorer, generators, client SDKs, websocket microservices HTTP routing, middleware Rails familiarity, MVC Universal JavaScript, reactive rendering, websocket microservices Suitable For Web apps, APIs Simple web apps Web apps, APIs Web apps Clint SDKs Angular, Browser, Node.js, iOS, Android, Xamarin N/A None JavaScript, Cordova for iOS and Android, React, AngularJS Data Source In-memory/file, MongoDB, MySQL, Oracle, PostgreSQL, SQL Server, ATG, Email, REST, SOAP, many more. None In-memory, File, PostgreSQL, MySQL, MongoDB MongoDB, MySQL and PostgreSQL via 3rd-party packages ACLs Yes No No Basic allow/deny Comparation
  15. PART 3 4 2 Why we use? “By using LoopBack,

    we can build REST API easily with little or no coding, connect to various datasources and define model relationship & its control access.”
  16. PART 3 4 2 How it works? • Models :

    Dynamically mock-up models and expose them as APIs without worrying about persisting (some) Key Features • Abstraction : Connect to multiple data sources or services and get back an abstracted model with CRUD capabilities independent of backing data source. • Data : Enable connections to RDBMS and noSQL data sources and get back an abstracted model • ACL : Controls if a principal can perform a certain operation against a model. • Remote Method : exposed remote method over a custom REST endpoint to perform operations not provided by LoopBack’s standard model REST API • Remote Hook : executed before or after calling a remote method, either a custom remote method or a standard CRUD inherited from PersistedModel
  17. PART 3 4 2 Getting Started • Install : Install

    the LoopBack CLI tool $ npm install –g loopback-cli • Create App : Create a “Hello World” LoopBack application $ lb • Create Models : Generate models through CLI $ lb model • Run : Run as you would any Node application $ node . • Explore : Enables you to exercise all generated API endpoints http://127.0.0.1:3000/explorer
  18. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ whoami marudits@dev-circle-mlg:~$ man –k ‘REST API’ marudits@dev-circle-mlg:~$ lb --help marudits@dev-circle-mlg:~$ npm run start _
  19. i < /> { } /* install loopback */ $

    npm install –g loopback-cli /* create app */ $ lb /* create models */ $ lb model /* attach to datasource */ $ lb datasource /* define relations */ $ lb relation /* run app */ $ node . /* à develop your own */ /* set access control */ $ lb acl
  20. i < /> { } /* install antd-init generator */

    $ npm install –g antd-init /* make and move to app directory */ $ mkdir helloworld && cd helloworld /* create app */ $ antd-init /* run app */ $ npm start /* à develop your own */
  21. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ whoami marudits@dev-circle-mlg:~$ man –k ‘REST API’ marudits@dev-circle-mlg:~$ lb --help marudits@dev-circle-mlg:~$ npm run start marudits@dev-circle-mlg:~$ ping tebengan.id _
  22. Should our stories resonate with you, why not share your

    stories and aspiration with us and help build tebengan together (?) [email protected]
  23. Welcome to Facebook Developer Circle Meetup * Date: Sunday, 26

    Mar 2017 * Place: Ngalup.co, Mojolangu, Malang Last login: Sun Mar 26 09:00:00 2017 from 127.0.0.1 marudits@dev-circle-mlg:~$ whoami marudits@dev-circle-mlg:~$ man –k ‘REST API’ marudits@dev-circle-mlg:~$ lb --help marudits@dev-circle-mlg:~$ npm run start marudits@dev-circle-mlg:~$ ping tebengan.id marudits@dev-circle-mlg:~$ shutdown –h now _