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:~$ _
Learn Developing REST API
in Node.js using LoopBack Framework
by Marudi Tri Subakti
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 _
PART
1
{
“name”: “Marudi Tri Subakti”,
“phone”: “(+62) 85646628435”,
“email”: “marudits@gmail.com”,
“works”:[
{
“company”: “PT Musica Studio’s”,
“role”: “Web Developer”,
}, {
“company”: “Tebengan ID”,
“role”: “Web Developer”
}
]
}
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’ _
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
21
• 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
Why?
• Performance, communication style is meant to be efficient and simple
3
PART
21
• 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
How it works? (Resources)
• Representations
3
PART
21
• Identifier
• Metadata
• Control Data
How it works? (Resources)
• Representations, it can be any way of representing data (binary, JSON, XML, etc)
3
PART
21
• Identifier
• Metadata
• Control Data
How it works? (Resources)
• Representations
3
PART
21
• Identifier, a URL that retrieves only one specific resource at any given time
• Metadata
• Control Data
How it works? (Resources)
• Representations
3
PART
21
• Identifier
• Metadata, Content-type, last-modified time, and so forth
• Control Data, is-modifiable-since, cache-control
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 _
PART
3
42
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
PART
3
42
What is?
Architecture
• Create dynamic end-to-end REST APIs with little or no coding
PART
3
42
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
PART
3
42
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
PART
3
42
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.”
PART
3
42
How it works?
Core Concepts (Modules)
PART
3
42
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
PART
3
42
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
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 _
i
< />
{ }
i
< />
{ }
http://loopback.io/
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
i
< />
{ }
https://ant.design/
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 */
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 _
Should our stories resonate with you, why not
share your stories and aspiration with us
and help build tebengan together (?)
build@tebengan.id
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 _
Learn Developing REST API
in Node.js using LoopBack Framework
by Marudi Tri Subakti

Learn Developing REST API in Node.js using LoopBack Framework

  • 1.
    Welcome to FacebookDeveloper 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.
    Learn Developing RESTAPI in Node.js using LoopBack Framework by Marudi Tri Subakti
  • 3.
    Welcome to FacebookDeveloper 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 _
  • 4.
    PART 1 { “name”: “Marudi TriSubakti”, “phone”: “(+62) 85646628435”, “email”: “marudits@gmail.com”, “works”:[ { “company”: “PT Musica Studio’s”, “role”: “Web Developer”, }, { “company”: “Tebengan ID”, “role”: “Web Developer” } ] }
  • 5.
    Welcome to FacebookDeveloper 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’ _
  • 6.
    What is? • Putit 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 21 • 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
  • 7.
    Why? • Performance, communicationstyle is meant to be efficient and simple 3 PART 21 • 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
  • 8.
    How it works?(Resources) • Representations 3 PART 21 • Identifier • Metadata • Control Data
  • 9.
    How it works?(Resources) • Representations, it can be any way of representing data (binary, JSON, XML, etc) 3 PART 21 • Identifier • Metadata • Control Data
  • 10.
    How it works?(Resources) • Representations 3 PART 21 • Identifier, a URL that retrieves only one specific resource at any given time • Metadata • Control Data
  • 11.
    How it works?(Resources) • Representations 3 PART 21 • Identifier • Metadata, Content-type, last-modified time, and so forth • Control Data, is-modifiable-since, cache-control
  • 12.
    Welcome to FacebookDeveloper 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 _
  • 13.
    PART 3 42 What is? • LoopBackframework 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
  • 14.
  • 15.
    • Create dynamicend-to-end REST APIs with little or no coding PART 3 42 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
  • 16.
    PART 3 42 Why we use? LoopbackExpress 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
  • 17.
    PART 3 42 Why we use? “Byusing LoopBack, we can build REST API easily with little or no coding, connect to various datasources and define model relationship & its control access.”
  • 18.
    PART 3 42 How it works? CoreConcepts (Modules)
  • 19.
    PART 3 42 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
  • 20.
    PART 3 42 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
  • 21.
    Welcome to FacebookDeveloper 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 _
  • 22.
  • 23.
  • 24.
    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
  • 25.
  • 26.
    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 */
  • 27.
    Welcome to FacebookDeveloper 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 _
  • 28.
    Should our storiesresonate with you, why not share your stories and aspiration with us and help build tebengan together (?) build@tebengan.id
  • 29.
    Welcome to FacebookDeveloper 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 _
  • 30.
    Learn Developing RESTAPI in Node.js using LoopBack Framework by Marudi Tri Subakti

Editor's Notes

  • #7 REST is an architectural style define to help create and organize distributed system
  • #8 Performance, communication style is meant to be efficient and simple 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
  • #16 Core Set up models and create REST APIs in minutes Easy-to-use CLI wizard Create models based on your schema if you have one Create dynamic models if you don't Built-in API Explorer Model relation support Define hasMany, belongsTo, hasAndBelongsToMany relationships Automatically generates corresponding relational REST endpoints Easy authentication and authorization setup Built-in role-based access controls oAuth user and registration models baked in Add custom policies using CLI or JSON Browser support (JSONP and CORS) MIT Open-Source license
  • #25 Demo : about 10-15 minutes departureName string arrivalName string departurePoint geopoint arrivalPoint geopoint departureSublocations string arrivalSublocations string departureDate date Price number Seats number isCar Boolean Description string
  • #26 Demo : about 10-15 minutes
  • #27 Demo : about 5 minutes