SlideShare a Scribd company logo
1
API-Driven App Development
Greg Rewis
grewis@apigee.com
@garazi
2
Alex Muramoto
alexm@apigee.com
@alexmuramoto
#ILoveAPIs
http://j.mp/iloveapis-workshop
3
Why do we do this workshop?
4
Apigee is always free for developers
Free Hosted Accounts
25GB storage limit,
10M push notifications/month
no API/bandwidth limit
Commercial use OK
5
Paid plans available for large
companies if you need to deploy on
your own servers or SLAs, 4 nines,
multi-region, phone support, more
storage, etc.
6
Apigee SMB
7
Who are you?
8
Coders Workshop: API First Mobile Development Featuring Angular and Node
Agenda
Section 1
Node.js Crash Course
Section 2
RESTful API Best Practices
Section 3
Intro to Apigee127
Section 4
Intro to AngularJS and Ionic
10
Agenda
Section 5
Intro to mBaaS
Section 6
Putting It All Together
Section 7
{ OKTOBERFEST: IPAs }
11
Node.js Crash Course
Why node.js?
โ€ข Javascript running on the server
โ€ข Asynchronous, event-driven
โ€ข HTTP is a first-class citizen of the Node world
โ€ข Exploding in popularity
13
Who is using Node.js?
14
Node.js success stories
โ€ข LinkedIn moved to Node.js from Rails for their
mobile traffic, reducing the number of servers from
30 to 3 (90% reduction) and the new system was
up to 20x faster.โ€จ
โ€ข PayPal measured a 2x increase in developer
productivity, where it took half the number of
developers to deliver an application when compared
to Java, and it was delivered in less time
15
Node.js success stories
โ€ข WalMart Labs had a bumper launch with Node.js
in 2013, where they put all of their Mobile traffic
through Node.js on Black Friday.โ€จ
โ€ข Servers didnโ€™t go over 1% CPU utilization and the
team did a deploy with 200,000,000 users online.
16
Node.js installation
17
Node.js Event Loop
18
The worldโ€™s simplest web server
19
Express routes
20
The world of npm
21
Modules must be installed
22
Installing modules
โ€ข Individual modules must be installed using the
NPM command line
โ€ข Once installed (node_modules folder), they are
added to the app using require(โ€˜module nameโ€™)
23
Installing multiple modules
โ€ข When a Node.js app launches, it looks for a file,
package.json, in the same folder as the main JS file
to determine if all of its โ€˜piecesโ€™ are present
โ€ข Using npm install will install all of the listed
dependencies at one time.
24
Best Practices in RESTful API Design
In the beginningโ€ฆ
26
SOAP and XML-RPC
27
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns1:RequestHeader
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:ns1="https://www.google.com/apis/ads/publisher/v201403">
<ns1:networkCode>123456</ns1:networkCode>
<ns1:applicationName>DfpApi-Java-2.1.0-dfp_test</ns1:applicationName>
</ns1:RequestHeader>
</soapenv:Header>
<soapenv:Body>
<getAdUnitsByStatement xmlns="https://www.google.com/apis/ads/publisher/v201403">
<filterStatement>
<query>WHERE parentId IS NULL LIMIT 500</query>
</filterStatement>
</getAdUnitsByStatement>
</soapenv:Body>
</soapenv:Envelope>
The dawn of REST
28
Representational State Transfer
29
โ€ข Resources and resource identifiers	
 ย 
โ€ข Transport and semantic independence	
 ย 
โ€ข Statelessness	
 ย 
โ€ข Interface/contract uniformity	
 ย 
โ€ข Metadata and shared understanding of data types	
 ย 
โ€ข Self-descriptive messages	
 ย 
โ€ข Hypertext as the Engine of Application State (HATEOAS)
What could be easier?
30
GET https://www.googleapis.com/adexchangebuyer/v1.3/accounts
Web
Point of Sale
Partner
Mobile
ESB, SOA,
App
Servers,
Databases
Apps Backend ServicesAPIs
Teaching a dog to REST
Reluctant API Design
/getDog
/getAllDogs
/petDog
/feedDog
/createRecurringDogWalk
/giveCommand
/healthCheck
/getRecurringDogWalkSchedule
/getLocation
/teachTrick
33
Reluctant API Design
/getAllDogs
/petDog
/feedDog
/createRecurringWakeUp
/giveCommand
/checkHealth
/getRecurringWakeUpSchedule
/getLocation
/getDog
/newDog
/getNewDogsSince
/getSittingDogs
/setDogStateTo/saveDog
/getAllLeashedDogs
/verifyVeterinarianLocation
/createRecurringMedication
/doDirectOwnerDiscipline
/doCheckupWithVeterinarian
/getRecurringFeedingSchedule
/getHungerLevel
/getSquirrelsChasingPuppies
/newDogForOwner
/getNewDogsAtKennelSince
/getSittingDogsAtPark
/setLeashedDogStateTo
/saveMommaDogsPuppies
34
It happens in the real world
35
Design for adoption
36
Resource modeling
We only need two base URLs for a resourceโ€จ
A collectionโ€จ
โ€จ
A resource
37
/dogs
/dogs/1234
Threeโ€™s company
38
/owners/5678/dogs
Sweep complexity behind the โ€œ?โ€
39
/dogs?color=red&state=running&location=park
Actions are resources
40
/convert?from=EUR&to=CNY&amount=100
(hypothetical)
/droplets/{droplet_id}/reboot
DigitalOcean
/search?q=watermelon&type=post
Facebook
Never EVER
Never Break
The Client.
EVER.
41
unlessโ€ฆ
Versioning schemes
42
/2010-04-01/Accounts/
/services/data/v30.0/limits
/v2.0/me
/v2/users/{userid}/checkins
Intro to Apigee 127
Apigee 127 on the web
44
https://github.com/apigee-127
Installing Apigee 127
โ€ข Apigee 127 is installed using the command line โ€“ note that you
may have to use sudo on a Macโ€จ
npm install -g apigee-127
โ€ข Using the -g option installs Apigee 127 as a globally available
app โ€“ this is recommended
45
Starting an Apigee-127 Skeleton Project
โ€ข a127 project create <project name>
โ€ข cd <project name>
โ€ข a127 project edit
โ€ข a127 project start (run this in a different tab/window)
46
Disable Response Validation
โ€ข Open config/default.yaml
โ€ข Change to validateResponse: false
47
Creating an Apigee 127 Project
โ€ข Using the command line, navigate to the place
where you want to create a new project
a127 project create api-workshop
48
Apigee 127 App Structure
49
Try it out
โ€ข Navigate inside the project folder, then execute the command โ€จ
a127 project start
โ€ข Open a browser window and navigate to:โ€จ
http://localhost:10010/hello?name=YOUR-NAME-HERE
50
Launching the Editor
โ€ข Launch the local Swagger editor by runningโ€จ
a127 project edit
51
How Do Controllers Work?
โ€ข All controllers are stored in the api/controllers folder
โ€ข The name of the controller (.js file) must match the โ€จ
x-swagger-router-controller: value in the swagger doc
52
How Do Controllers Work?
โ€ข Each controller exports an array of name/value pairings where
the name corresponds to the operationId: in the swagger
document and the value is the function within the controller
53
Intro to AngularJS & Ionic
npm install -g cordova ionic
55
Install Ionic & Cordova
What is AngularJS?
โ€ข JS Model-View-Controller (MVC) framework
โ€ข Declarative UI programming
โ€ข Imperative logic programming
โ€ข DOM manipulation decoupled from app logic
โ€ข Many built-in directives to handle DOM manipulation
โ€ข Single page app development
56
57
58
Model-View-Controller (MVC)
Model
โ€ข Data stored as JavaScript variables
โ€ข Set/updated in the view and/or controller
View
โ€ข What the user sees and interacts with
โ€ข HTML template filesโ€จ
Controller
โ€ข Defines business logic
โ€ข Written in JavaScript
59
$scope.name = โ€˜Alexโ€™;
<p>Hello, {{name}}!</p>
if (!$scope.name) {
$scope.name = โ€˜Strangerโ€™;
}
So What?
โ€ข Clear, succinct and modular component structure
โ€ข Easy to build/collaborate on large apps
โ€ข Extensible (dependency injection)
โ€ข Improves testability
โ€ข Two-way data bindings
60
One-way Data Binding (traditional)
61
Source: https://docs.angularjs.org/guide/databinding
Two-way Data Binding (AngularJS)
62
Source: https://docs.angularjs.org/guide/databinding
Ionic
โ€ข Hybrid mobile app frameworkโ€จ
(no native development required)
โ€ข Mobile-optimized Angular constructs (directives, events)
โ€ข Leverages AngularJS and Apache Cordova
โ€ข Build once, deploy everywhereโ€จ
iOS, Android, Kindle, Windows Phone?, Blackberry???
โ€ข Performant!
63
Create Ionic Skeleton App
64
ionic start myApp blank
Super Simple Ionic Hello World App
65
http://j.mp/ionic-hello
โ€ข Add a two-way data-binding to template
โ€ข Create a controller
โ€ข Add a value to the model
โ€ข Inject the controller into the app
โ€ข Update the model with an input field
Intro to API BaaS
API BaaS
67
Apache Usergrid
4+ years in OSS
500+ stars
200+ forks
35 contributors
Why use a BaaS?
68
โ€ข Data Store
โ€ข Push Notifications
โ€ข File/Asset Storage
โ€ข Social Graph
โ€ข User Management
โ€ข Geolocation
โ€ข Error/Crash Monitoring
Using a BaaS
69
j.mp/api-v1-signup
Apigee Edge
70
API BaaS
โ€ข Locate your org name in the upper lefthand corner of the API
BaaS portal
โ€ข For the workshop, youโ€™ll be using the sandbox app
โ€ข Your database is located atโ€จ
http://api.usergrid.com/YOURORGNAME/sandbox
71
Database Model
Restaurants
	 name: "AZ Bread Companyโ€
	 address: "315 W Elliot Rdโ€
	 city: โ€œTempe"
	 state: โ€œAZ"
	 phone: "+1-480-831-1300"
	 category: โ€จ
	 	 "Breakfast & Brunch"
	 location: {
	 	 โ€œlatitude":	 	
	 	 33.348763010085996,
	 	 "longitude":
	 	 -111.94435105010001
	 	 }
	 restID: 20
72
Reviews
	 title: "All around good food"
	 body: "Can't complain about
a very consistent joint. Get there
early on a Friday though, because
it tends to fill up quickly."
	 rating: 4
	 restID: 5,
	 reviewer: "johnnyapples"
Populate the database
โ€ข In your browser, go to the following URL, changing
YOURORGNAME to your own org name and a
location (city or address) of your choiceโ€จ
http://grewis-test.apigee.net/api-restaurants/
setup/YOURORGNAME?location=Phoenix,AZ
73
Exercise - a127
โ€ข Define an API to return a list of restaurants
74
j.mp/api-to-app-swagger-01
Exercise - a127
โ€ข Create the restaurants controller โ€œrestaurants.jsโ€ in
the controllers folder
75
j.mp/api-to-app-restaurants-01
Putting It All Together
Starter Project
โ€ข Download the starter project
77
j.mp/ionic-starter-files
Exercise
โ€ข Add the following to app.jsโ€จ
j.mp/ionic-app-js-01
โ€ข Add the following to controllers.jsโ€จ
j.mp/ionic-controllers-js-01
78
Exercise
โ€ข Create an API definition to return all of the reviews for a
specific restaurant
79
j.mp/api-to-app-swagger-02
Exercise
โ€ข Create the corresponding controller for the reviews API (use
restID as the unique key)
80
j.mp/api-to-app-restaurants-02
Exercise
โ€ข Add the following to app.jsโ€จ
j.mp/ionic-app-js-02
โ€ข Add the following to controllers.jsโ€จ
j.mp/ionic-controllers-js-02
โ€ข Add the following to services.jsโ€จ
j.mp/ionic-services-js-01
81
Exercise
โ€ข Add the following to directives.jsโ€จ
j.mp/ionic-directives-js-01โ€จ
โ€ข Test the app. Tap/click on a restaurant to move to
the details page
82
Exercise
โ€ข Create an API definition to allow a user to POST a new
review
83
j.mp/api-to-app-swagger-03
Exercise
โ€ข Create the corresponding controller for the reviews API (use
restID as the unique key)
84
j.mp/app-to-api-reviews
Exercise
โ€ข Add the following to app.jsโ€จ
j.mp/ionic-app-js-03
โ€ข Add the following to controllers.jsโ€จ
j.mp/ionic-controllers-js-03
โ€ข Test the app and add a review
85
Exercise
โ€ข Add the following to controllers.jsโ€จ
j.mp/ionic-controllers-js-04
โ€ข Test the app
86
Exercise
โ€ข If all else has failedโ€ฆโ€จ
j.mp/api-to-app-final-filesโ€จ
โ€ข You'll need to change YOURORGNAME in the
restaurants.js and reviews.js files in a127-API/api/
controllers/
87
Deploying the APIs
Using Apigee Edge
An a127 account is needed to deploy to the Apigee Edge
platform. An a127 app can also be deployed to AWS,
Heroku or anywhere that a Node.js app can run.
89
Apigee Edge
โ€ข Log into your Apigee account at โ€จ
http://accounts.apigee.com
โ€ข Click on API Management to access your account
90
Creating an a127 account
โ€ข Create an a127 accountโ€จ
a127 account create {NAMEYOURACCOUNT}
โ€ข Select apigee as the provider and follow the prompts
(see the next slide)
91
Create an a127 account
a127 account create Apigee
[?] Provider? apigee
[?] Do you already have an account on apigee? Yes
[?] Base URI? [Just hit Return]
[?] Organization? YOURORGNAME
[?] User Id? YOUREMAILADDRESS
[?] Password? ****************
[?] Environment? test
[?] Virtual Hosts? [Just hit Return]
[?] Create account service? Yes
[?] Service Type? RemoteProxy
[?] Service name? RemoteProxy [or whatever you want to name it]
92
Deploying
โ€ข To deploy to Apigee Edge, ensure that you are in the
root of your a127 project directoryโ€จ
a127 project deploy
โ€ข After the upload is complete copy the URI of your APIs
93
Deploying
โ€ข If the upload times out โ€” which can happen due to the
server needing to run npm install โ€” you can chose to
have it upload your node_modules using the -u modifierโ€จ
a127 project deploy -u
94
Congratulations!
โ€ข Open the API Management console and choose API Proxies from
the API menu
โ€ข Click on your API to view info about it such as the base URL
95
Got docs?
โ€ข a127 docs: โ€จ
https://github.com/apigee-127/a127-
documentation/wiki
โ€ข API BaaS docs:โ€จ
http://apigee.com/docs/api-baas
96
Get more training
Advanced class?
Training for your company? Still free!
grewis@apigee.com or
alexm@apigee.com
Congratulations!
We donโ€™t accept tips but I do accept
tweets!
Greg Rewis
grewis@apigee.com
@garazi
Alex Muramoto
alexm@apigee.com
@alexmuramoto
Appendix: API Management
Sad, but trueโ€ฆ
100
Using Volos
โ€ข Volos provides a way to leverage common features such as
OAuth 2.0, Caching, and Quota management into your APIs
โ€ข OAuth 2.0 supports bearer tokens and all standard grant
types
โ€“Uses Redis or the Apigee platform for data storage
โ€ข Quota counts API calls and rejects them when the defined
limit is exceeded during the specified time period
โ€ข Caching can be in memory, using Redis or the Apigee
platform
101
Implementing a Cache
โ€ข In the swagger spec, add the following to the โ€จ
x-volos-resources key to apply a 10 second cache
โ€ข Apply the cache to the /restaurants API by adding the
following code
102
Implementing a Cache
โ€ข Using the Chrome Developer Tools (Cmd+Opt+I on Mac,
F12 on Windows), call the /restaurants API then click on
restaurants in the Network tab to see the Cache being
set
103
Adding a Quota
โ€ข Add the following to x-volos-resources to set a limit of 2
calls per hour*
โ€ข Apply the quota to the POST operation of the restaurants
API
104
* this is a completely silly example, but at least you can see it happen easily
Adding a Quota
โ€ข Refresh the /restaurants API a few times and watch as the
limit is applied using the Chrome Developer Tools
105
A Word of Caution
โ€ข Our example is letting us hit the request more than
twice because it is allowing the request as long as
the cache is still valid
โ€ข The order of the policies determines their order of
execution โ€“ in other words, if you reverse the cache
and quota order in the Swagger document, quota
will be enforced first and you will only be able to
make two requests each hour
โ€ข Go aheadโ€ฆ give it a try!
106
Adding oAuth2
โ€ข To use Apigee Edge for oAuth weโ€™ll first need to generate a client id and client secret
โ€ข Open the Apigee Edge Dashboardโ€จ
https://accounts.apigee.com/accounts/dashboard/
โ€ข Launch the API Management portal
โ€ข Go to Publish > Developer Apps
107
Adding oAuth2
โ€ข Click on the Remote Proxy app or whatever you named your
service.
โ€ข Use the Show buttons to reveal your Consumer Key and
Consumer Secret
108
Adding oAuth2
โ€ข Implementing oAuth in a127 requires several additions/
changes to your Swagger doc.
โ€ข Please visit the following page and follow the steps,
starting with step 4.
109
j.mp/adding-Apigee-oAuth
Obtaining an Access Token
โ€ข Using Postman (or any REST client), POST to the โ€จ
/accesstoken API
โ€ข Set the Header to โ€จ
Content-Type: application/json
โ€ข Pass the credentials as a raw JSON
110
Access Token
โ€ข Copy the returned access_token value to pass
with requests to the /restaurants API
111
Passing an Access Token
โ€ข The access token must be passed in the request header as
the value of the Authorization header
โ€ข The token is passed together with the Bearer keyword
112
Token Expiry
โ€ข When a token expires (like it might have happened to you, if
you were too slow), a new token must be issued
โ€ข Change the tokenLifetime in the Swagger document to
something more reasonable!
โ€ข 1 hour = 3600000
โ€ข 1 day = 86400000
โ€ข 1 week = 604800000
โ€ข Repeat the steps to request a token โ€” then change the
token in the /restaurants request
113
Thank you

More Related Content

What's hot (18)

PDF
I Love APIs 2015: Create Design-driven APIs with Node.js and Swagger
Apigee | Google Cloud
ย 
PDF
API Copyrights: New Considerations for Building or Using APIs
Apigee | Google Cloud
ย 
PPTX
Building a REST API for Longevity
MuleSoft
ย 
PPT
Modernizing an Existing SOA-based Architecture with APIs
Apigee | Google Cloud
ย 
PDF
Webcast: Deep-Dive Apigee Edge Microgateway
Apigee | Google Cloud
ย 
PPT
Why APIs are Different Than Integration
Apigee | Google Cloud
ย 
PPT
API 101 - Understanding APIs
3scale
ย 
PDF
Cloud-native Patterns (July 4th, 2019)
Alexandre Roman
ย 
PDF
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays
ย 
PDF
API Management @ Haufe
Haufe-Lexware GmbH & Co KG
ย 
PDF
Rest api best practices โ€“ comprehensive handbook
Katy Slemon
ย 
PDF
Ultimate Guide to 30+ API Documentation Solutions
Bill Doerrfeld
ย 
PPTX
API Services: Building State-of-the-Art APIs
Apigee | Google Cloud
ย 
PPTX
API Management and Kubernetes
Apigee | Google Cloud
ย 
PPTX
Continuous Integration and Delivery at Shapeways (Matt Boyle)
Nordic APIs
ย 
PPTX
Apigee Products Overview
Apigee | Google Cloud
ย 
PDF
Lessons Learned from Revamping Our Doc Site
Pronovix
ย 
PPTX
A Tasty deep-dive into Open API Specification Links
Tony Tam
ย 
I Love APIs 2015: Create Design-driven APIs with Node.js and Swagger
Apigee | Google Cloud
ย 
API Copyrights: New Considerations for Building or Using APIs
Apigee | Google Cloud
ย 
Building a REST API for Longevity
MuleSoft
ย 
Modernizing an Existing SOA-based Architecture with APIs
Apigee | Google Cloud
ย 
Webcast: Deep-Dive Apigee Edge Microgateway
Apigee | Google Cloud
ย 
Why APIs are Different Than Integration
Apigee | Google Cloud
ย 
API 101 - Understanding APIs
3scale
ย 
Cloud-native Patterns (July 4th, 2019)
Alexandre Roman
ย 
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
apidays
ย 
API Management @ Haufe
Haufe-Lexware GmbH & Co KG
ย 
Rest api best practices โ€“ comprehensive handbook
Katy Slemon
ย 
Ultimate Guide to 30+ API Documentation Solutions
Bill Doerrfeld
ย 
API Services: Building State-of-the-Art APIs
Apigee | Google Cloud
ย 
API Management and Kubernetes
Apigee | Google Cloud
ย 
Continuous Integration and Delivery at Shapeways (Matt Boyle)
Nordic APIs
ย 
Apigee Products Overview
Apigee | Google Cloud
ย 
Lessons Learned from Revamping Our Doc Site
Pronovix
ย 
A Tasty deep-dive into Open API Specification Links
Tony Tam
ย 

Similar to Coders Workshop: API First Mobile Development Featuring Angular and Node (20)

PPTX
Triangle Node Meetup : APIs in Minutes with Node.js
Shubhra Kar
ย 
PDF
I Love APIs Europe 2015: Developer Sessions
Apigee | Google Cloud
ย 
PPTX
StrongLoop Overview
Shubhra Kar
ย 
PPTX
Building Your First App with MongoDB
MongoDB
ย 
PPT
Using RESTFUL APIs in ANGULARJS
Mindfire Solutions
ย 
PDF
Seattle StrongLoop Node.js Workshop
Jimmy Guerrero
ย 
ODP
MEAN Inside out (with AngularX)
paolokersey
ย 
PDF
Consumer centric api design v0.4.0
mustafa sarac
ย 
PPTX
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
ย 
PDF
The future of web development write once, run everywhere with angular js an...
Mark Leusink
ย 
PDF
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
FITC
ย 
PDF
REST APIs
Arthur De Magalhaes
ย 
PDF
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias
ย 
PDF
MEAN Stack WeNode Barcelona Workshop
Valeri Karpov
ย 
PDF
Building a Great Web API - Evan Cooke - QCON 2011
Twilio Inc
ย 
PPTX
Full stack development using javascript what and why - ajay chandravadiya
ajayrcgmail
ย 
PPT
Switch to Backend 2023
Google Developer Students Club NIT Silchar
ย 
KEY
20120306 dublin js
Richard Rodger
ย 
PDF
Instant download Developing Backbone js Applications Addy Osmani pdf all chapter
dinetvenitja
ย 
PPTX
Connect js nodejs_api_shubhra
Shubhra Kar
ย 
Triangle Node Meetup : APIs in Minutes with Node.js
Shubhra Kar
ย 
I Love APIs Europe 2015: Developer Sessions
Apigee | Google Cloud
ย 
StrongLoop Overview
Shubhra Kar
ย 
Building Your First App with MongoDB
MongoDB
ย 
Using RESTFUL APIs in ANGULARJS
Mindfire Solutions
ย 
Seattle StrongLoop Node.js Workshop
Jimmy Guerrero
ย 
MEAN Inside out (with AngularX)
paolokersey
ย 
Consumer centric api design v0.4.0
mustafa sarac
ย 
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
ย 
The future of web development write once, run everywhere with angular js an...
Mark Leusink
ย 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
FITC
ย 
REST APIs
Arthur De Magalhaes
ย 
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias
ย 
MEAN Stack WeNode Barcelona Workshop
Valeri Karpov
ย 
Building a Great Web API - Evan Cooke - QCON 2011
Twilio Inc
ย 
Full stack development using javascript what and why - ajay chandravadiya
ajayrcgmail
ย 
20120306 dublin js
Richard Rodger
ย 
Instant download Developing Backbone js Applications Addy Osmani pdf all chapter
dinetvenitja
ย 
Connect js nodejs_api_shubhra
Shubhra Kar
ย 
Ad

More from Apigee | Google Cloud (20)

PDF
How Secure Are Your APIs?
Apigee | Google Cloud
ย 
PDF
Magazine Luiza at a glance (1)
Apigee | Google Cloud
ย 
PPTX
Monetization: Unlock More Value from Your APIs
Apigee | Google Cloud
ย 
PDF
Apigee Demo: API Platform Overview
Apigee | Google Cloud
ย 
PDF
Ticketmaster at a glance
Apigee | Google Cloud
ย 
PDF
AccuWeather: Recasting API Experiences in a Developer-First World
Apigee | Google Cloud
ย 
PDF
Which Application Modernization Pattern Is Right For You?
Apigee | Google Cloud
ย 
PPTX
Apigee Product Roadmap Part 2
Apigee | Google Cloud
ย 
PPTX
The Four Transformative Forces of the API Management Market
Apigee | Google Cloud
ย 
PDF
Walgreens at a glance
Apigee | Google Cloud
ย 
PDF
Apigee Edge: Intro to Microgateway
Apigee | Google Cloud
ย 
PDF
Managing the Complexity of Microservices Deployments
Apigee | Google Cloud
ย 
PDF
Pitney Bowes at a glance
Apigee | Google Cloud
ย 
PPTX
Microservices Done Right: Key Ingredients for Microservices Success
Apigee | Google Cloud
ย 
PDF
Adapt or Die: Opening Keynote with Chet Kapoor
Apigee | Google Cloud
ย 
PDF
Adapt or Die: Keynote with Greg Brail
Apigee | Google Cloud
ย 
PDF
Adapt or Die: Keynote with Anant Jhingran
Apigee | Google Cloud
ย 
PDF
London Adapt or Die: Opening Keynot
Apigee | Google Cloud
ย 
PDF
London Adapt or Die: Lunch keynote
Apigee | Google Cloud
ย 
PDF
London Adapt or Die: Closing Keynote โ€” Adapt Now!
Apigee | Google Cloud
ย 
How Secure Are Your APIs?
Apigee | Google Cloud
ย 
Magazine Luiza at a glance (1)
Apigee | Google Cloud
ย 
Monetization: Unlock More Value from Your APIs
Apigee | Google Cloud
ย 
Apigee Demo: API Platform Overview
Apigee | Google Cloud
ย 
Ticketmaster at a glance
Apigee | Google Cloud
ย 
AccuWeather: Recasting API Experiences in a Developer-First World
Apigee | Google Cloud
ย 
Which Application Modernization Pattern Is Right For You?
Apigee | Google Cloud
ย 
Apigee Product Roadmap Part 2
Apigee | Google Cloud
ย 
The Four Transformative Forces of the API Management Market
Apigee | Google Cloud
ย 
Walgreens at a glance
Apigee | Google Cloud
ย 
Apigee Edge: Intro to Microgateway
Apigee | Google Cloud
ย 
Managing the Complexity of Microservices Deployments
Apigee | Google Cloud
ย 
Pitney Bowes at a glance
Apigee | Google Cloud
ย 
Microservices Done Right: Key Ingredients for Microservices Success
Apigee | Google Cloud
ย 
Adapt or Die: Opening Keynote with Chet Kapoor
Apigee | Google Cloud
ย 
Adapt or Die: Keynote with Greg Brail
Apigee | Google Cloud
ย 
Adapt or Die: Keynote with Anant Jhingran
Apigee | Google Cloud
ย 
London Adapt or Die: Opening Keynot
Apigee | Google Cloud
ย 
London Adapt or Die: Lunch keynote
Apigee | Google Cloud
ย 
London Adapt or Die: Closing Keynote โ€” Adapt Now!
Apigee | Google Cloud
ย 
Ad

Recently uploaded (20)

PPTX
Wondershare Filmora Crack 14.5.18 + Key Full Download [Latest 2025]
HyperPc soft
ย 
PPTX
Avast Premium Security crack 25.5.6162 + License Key 2025
HyperPc soft
ย 
PPTX
Iobit Driver Booster Pro 12 Crack Free Download
chaudhryakashoo065
ย 
PDF
Automated Testing and Safety Analysis of Deep Neural Networks
Lionel Briand
ย 
PDF
Automated Test Case Repair Using Language Models
Lionel Briand
ย 
PPTX
CONCEPT OF PROGRAMMING in language .pptx
tamim41
ย 
PDF
Designing Accessible Content Blocks (1).pdf
jaclynmennie1
ย 
PDF
Laboratory Workflows Digitalized and live in 90 days with Scifeonยดs SAPPA P...
info969686
ย 
PDF
Difference Between Kubernetes and Docker .pdf
Kindlebit Solutions
ย 
PDF
WholeClear Split vCard Software for Split large vCard file
markwillsonmw004
ย 
PDF
What Is an Internal Quality Audit and Why It Matters for Your QMS
BizPortals365
ย 
PPTX
B2C EXTRANET | EXTRANET WEBSITE | EXTRANET INTEGRATION
philipnathen82
ย 
PDF
AI Software Development Process, Strategies and Challenges
Net-Craft.com
ย 
PDF
Rewards and Recognition (2).pdf
ethan Talor
ย 
PDF
IDM Crack with Internet Download Manager 6.42 Build 41
utfefguu
ย 
PDF
>Nitro Pro Crack 14.36.1.0 + Keygen Free Download [Latest]
utfefguu
ย 
PPTX
IObit Uninstaller Pro 14.3.1.8 Crack Free Download 2025
sdfger qwerty
ย 
PPTX
Introduction to web development | MERN Stack
JosephLiyon
ย 
PDF
LPS25 - Operationalizing MLOps in GEP - Terradue.pdf
terradue
ย 
PPT
Information Communication Technology Concepts
LOIDAALMAZAN3
ย 
Wondershare Filmora Crack 14.5.18 + Key Full Download [Latest 2025]
HyperPc soft
ย 
Avast Premium Security crack 25.5.6162 + License Key 2025
HyperPc soft
ย 
Iobit Driver Booster Pro 12 Crack Free Download
chaudhryakashoo065
ย 
Automated Testing and Safety Analysis of Deep Neural Networks
Lionel Briand
ย 
Automated Test Case Repair Using Language Models
Lionel Briand
ย 
CONCEPT OF PROGRAMMING in language .pptx
tamim41
ย 
Designing Accessible Content Blocks (1).pdf
jaclynmennie1
ย 
Laboratory Workflows Digitalized and live in 90 days with Scifeonยดs SAPPA P...
info969686
ย 
Difference Between Kubernetes and Docker .pdf
Kindlebit Solutions
ย 
WholeClear Split vCard Software for Split large vCard file
markwillsonmw004
ย 
What Is an Internal Quality Audit and Why It Matters for Your QMS
BizPortals365
ย 
B2C EXTRANET | EXTRANET WEBSITE | EXTRANET INTEGRATION
philipnathen82
ย 
AI Software Development Process, Strategies and Challenges
Net-Craft.com
ย 
Rewards and Recognition (2).pdf
ethan Talor
ย 
IDM Crack with Internet Download Manager 6.42 Build 41
utfefguu
ย 
>Nitro Pro Crack 14.36.1.0 + Keygen Free Download [Latest]
utfefguu
ย 
IObit Uninstaller Pro 14.3.1.8 Crack Free Download 2025
sdfger qwerty
ย 
Introduction to web development | MERN Stack
JosephLiyon
ย 
LPS25 - Operationalizing MLOps in GEP - Terradue.pdf
terradue
ย 
Information Communication Technology Concepts
LOIDAALMAZAN3
ย 

Coders Workshop: API First Mobile Development Featuring Angular and Node