SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
An Introduction into
the Web API

Brad Genereaux | @integratorbrad | about.me/integratorbrad | hcintegrations.ca
Web Developers P2P : February 2014
Housekeeping
• About Me - Brad Genereaux
– Healthcare and API developer
– Integration Architect at Agfa Healthcare
– Blogger about all the API things

• Discussion and questions
– Ask anytime, or at the end
Topics
•
•
•
•
•

API
REST
Security
Web
Examples
The API

Application Programming Interface
What is an API?
• Methods to access data and workflow
from an application without using the
application itself
API Example

vs
Why an API?
• Not all users are the same
– Some want:

– Some want / need:

– And their needs and wants are ever shifting
An API Stack
GUI
(front-end)

API
(middle tier)

Data Sources
(back-end)
… sounds like a good framework
for Web …
The REST

REpresentational State Transfer
What is REST?
• Architectural style (not a standard!)
• Client server model
• Stateless
– Idempotency

• Cacheable
• Layered System
• Uniform interface
Source: https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf
Who RESTs?
•
•
•
•
•
•
•

Facebook
Twitter
Google
LinkedIn
Netflix
Evernote
Etc etc
Why REST?
•
•
•
•
•

Scalable
Fault-tolerant
Recoverable
Secure
Loosely coupled
What do I need to REST?
Clients
• Browsers
• Mobile Apps
• Desktop Apps

Servers
• “Capable of HTTP”
–
–
–
–
–
–

Java-based
.Net-based
PHP
Ruby
Perl
Etc.
Three levels of REST
• Level 1 : Resources
• Level 2 : Verbs
• Level 3 : HATEOAS
Resources, Level 1 REST
•
•
•
•

/users
/users/bob
/users/bob/tweets
/users/bob/tweets/1
Verbs, Level 2 REST
• CRUD
What is CRUD?
• Standard database operations:
C reate
R ead
U pdate
D elete
Verbs, Level 2 REST
• CRUD
• GET /tweets
(as opposed to /givemethetweets)

• POST /tweets
(as opposed to /createnewtweet)

• PUT /tweets/1
(as opposed to /updatetweet/1)

• DELETE /tweets/1
(as opposed to /removetweet/1)
RESTful Methods
GET
Collection URI
(such as
http://a.com/items/)

Element URI
(such as
http://a.com/items/17)

PUT

POST

DELETE

List the items in
the collection and
some metadata
about the items

Replace the entire
collection with
another collection

Create a new entry in
the collection, and
return the reference

Delete all the
items in the
collection

Retrieve a
specific item in
the collection

Replace a specific
item in the
collection; if it
doesn't
exist, create it

Not generally used

Delete the
specific item
in the
collection

• There are other methods less used (HEAD, OPTIONS, PATCH) for other purposes
• Representations of an item are specified by the media type (MIME type)

Source: http://en.wikipedia.org/wiki/Representational_state_transfer
HATEOAS, Level 3 REST
• Hypermedia as the engine of
application state

"ids" : [
12345678,
87654321,
11223344
]

"links": [
{
"rel": "UserInfo",
"href": "https://.../user/12345678"
},
{
"rel": "Tweets",
"href": "https://.../tweet/87654321"
},
{
"rel": "Messages",
"href": "https://.../msgs/11223344"
}
]
Data Formats (XML and JSON)
 XML (135 characters):
<tweets>
<tweet type="text" id="1">
<text>REST is great!</text>
</tweet>
<tweet type="text" id="2">
<text>APIs forever!</text>
</tweet>
</tweets>

 JSON (109 characters):
{
"tweets": [
{"type": "text", "id": "1",
"text": "REST is great!"},
{"type": "text", "id": "2",
"text": "APIs forever!"}
]
}

 XML can be validated (XML Schema), stylized (XSL), traversed

(XPath), queried (XQuery), transformed (XSLT), and
namespaced
 JSON is easier
What makes for good REST?
• Self-documenting
• Nouns in path, verbs by HTTP
• Complexity under the “?”
– i.e., /tweets/?contains=API

• Errors use HTTP error code mechanism
• As simple as possible, but no simpler
REST Alternatives
• SOAP (simple object access protocol)
• Javascript
• XML-RPC

• See discussion at
http://www.slideshare.net/jmusser/j-musser-ap
Important : Know your TTFHW
(Time to First Hello World) !
API Worst Practices
Source: http://www.slideshare.net/jmusser/j-musser-apishotnotgluecon2012

10. Poor error handling
9. Ignoring HTTP rules
8. Exposing your underlying data model
7. Security complexity
6. Unexpected release cycles
5. Poor developer experience
4. Expecting an MVC to give you a great API
3. Assuming if you build it, they will come
2. Inadequate support
1. Poor documentation
The Security
Authentication and Authorization
• Authentication : Who
• Authorization : What they are allowed to
do
• Not your job, but your responsibility
Security Frameworks
• OAuth
– Authorizing services

• OpenID
– Facebook, Google

• LDAP
– Enterprise authentication
Application Security Threats
Input Validation
Authentication

Session Management
Cryptography

Authorization

Exception Management

Configuration
Management

Parameter Manipulation

Sensitive Information

Auditing and Logging

Source: http://en.wikipedia.org/wiki/Application_security
SQL Injection

Consider the following pseudo-code:
String topic = request.getParameter(“topic");
SQLCommand sql = new SQLCommand("select * from
tweets where topic like ‘" + topic + "%’")

So what happens if the parameter is:
– API
– REST
– h3ck0rz’; drop table tweets; -Source: http://xkcd.com/327/
The Web

Client-side Access to REST
HTML5 + CSS
• “HyperText Markup Language”
– Characterized by the DOM (document object model) Completely
ubiquitous across the Internet
<html>
<body>
<h1>Hello World</h1>
</body>
</html>

• “Cascading Style Sheets”
– Allows for advanced stylization of content
– Example:

.giant {
font-size: 72px;
color: blue;
}
JavaScript
•
•
•
•

Multi-paradigm weakly-typed scripting language
Used most often hand-in-hand with HTML
Not Java, at all (syntax based on C)
Example:
alert (“Hello World!”);

• Able to manipulate the DOM and interact with the
browser environment
AJAX
• “Asynchronous JavaScript and XML”
• Group of technologies that allow for robust client
interactions without reloading web pages
– HTML and CSS for presentation
– DOM for display and interaction of data
– XML for data interchange
– XMLHttpRequest for asynchronous communication
– JavaScript to bring these technologies together
• AJAX is the key to consuming REST
jQuery
• “jQuery is a fast and concise JavaScript Library that
simplifies HTML document traversing, event handling,
animating, and Ajax interactions for rapid web
development.”
• Example:
$(“#h1”).html(“Hello World!”);

• jQuery tests against many browser platforms and solves
a lot of the problems that supporting many platforms
introduces
Calling REST with jQuery
Verb

• Use an AJAX Call
Resource
$.ajax({
type : "GET",
url : "http://a.com/tweets",
data : {"contains" : "API"},
dataType : "json",
success : function(data){
alert ("Results: " + data);
}
});

Query
parameters
Media type
Tips
• Use “curl” to simulate calls from your
command line
• Use Chrome debug tools or Firebug to
watch traffic and test your Javascript
• Use libraries – no need to reinvent the
wheel
Other Frameworks
•
•
•
•

UI Frameworks (Bootstrap, Foundation)
MVC Frameworks (Angular, Backbone)
Tooling (Yeoman, Lineman)
Documentation (Apiary, Swagger)

• No shortage of options
The Examples
Some REST API Examples
•
•
•
•
•

Facebook
Twitter
If This, Than That
Twilio
Demo
Facebook Graph API
• Every object has an ID:

• Objects can be searched:

• Objects can be updated:
Twitter REST API
If This, Then That

•

API Integration Website - http://ifttt.com/
Twilio
Demo
Need more REST?
• Programmable Web
http://programmableweb.com
John Musser’s presentations: http://www.slideshare.net/jmusser

• Crafting Interfaces that Developers Love
http://offers.apigee.com/api-design-ebook-rr/

• API Craft Google Group https://
groups.google.com/forum/#!forum/api-craft
Discussion - Questions

Mais conteúdo relacionado

Mais procurados

REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & DevelopmentAshok Pundit
 
JavaScript - Chapter 12 - Document Object Model
  JavaScript - Chapter 12 - Document Object Model  JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object ModelWebStackAcademy
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API07.pallav
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsTessa Mero
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentationivpol
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developersPatrick Savalle
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework Serhat Can
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIhabib_786
 
An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST Ram Awadh Prasad, PMP
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectJadson Santos
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.jsVikash Singh
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh Pandey
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Peter R. Egli
 

Mais procurados (20)

REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
JavaScript - Chapter 12 - Document Object Model
  JavaScript - Chapter 12 - Document Object Model  JavaScript - Chapter 12 - Document Object Model
JavaScript - Chapter 12 - Document Object Model
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
API
APIAPI
API
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentation
 
Servlets
ServletsServlets
Servlets
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
REST API
REST APIREST API
REST API
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST
 
Introduction to angular with a simple but complete project
Introduction to angular with a simple but complete projectIntroduction to angular with a simple but complete project
Introduction to angular with a simple but complete project
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
What is an API?
What is an API?What is an API?
What is an API?
 
Express js
Express jsExpress js
Express js
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)Web Services (SOAP, WSDL, UDDI)
Web Services (SOAP, WSDL, UDDI)
 

Destaque

Web data from R
Web data from RWeb data from R
Web data from Rschamber
 
R by example: mining Twitter for consumer attitudes towards airlines
R by example: mining Twitter for consumer attitudes towards airlinesR by example: mining Twitter for consumer attitudes towards airlines
R by example: mining Twitter for consumer attitudes towards airlinesJeffrey Breen
 
Keeping it safe: Securing DICOM
Keeping it safe: Securing DICOMKeeping it safe: Securing DICOM
Keeping it safe: Securing DICOMBrad Genereaux
 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsChris Schalk
 
BlueVia overview
BlueVia overviewBlueVia overview
BlueVia overviewBlueVia
 
Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...
Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...
Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...Alan Quayle
 
SQE - Semantic Query Expansion
SQE - Semantic Query ExpansionSQE - Semantic Query Expansion
SQE - Semantic Query Expansionkciuk
 
Cec2010 araujo pereziglesias
Cec2010 araujo pereziglesiasCec2010 araujo pereziglesias
Cec2010 araujo pereziglesiasLourdes Araujo
 
Introduction to API Design: REST and Java
Introduction to API Design: REST and JavaIntroduction to API Design: REST and Java
Introduction to API Design: REST and JavaPhilip Johnson
 
Mobile operators: working together to adopt a standardized API platform, WSO2...
Mobile operators: working together to adopt a standardized API platform, WSO2...Mobile operators: working together to adopt a standardized API platform, WSO2...
Mobile operators: working together to adopt a standardized API platform, WSO2...Alan Quayle
 
Enhancing Information Retrieval by Personalization Techniques
Enhancing Information Retrieval by Personalization TechniquesEnhancing Information Retrieval by Personalization Techniques
Enhancing Information Retrieval by Personalization Techniquesveningstonk
 
Tech Meetup: How to build a Rest API in Java
Tech Meetup: How to build a Rest API in JavaTech Meetup: How to build a Rest API in Java
Tech Meetup: How to build a Rest API in JavaSantex Group
 
Conquest for dummies: how to setup a pacs server
Conquest for dummies: how to setup a pacs serverConquest for dummies: how to setup a pacs server
Conquest for dummies: how to setup a pacs serverBogazici University
 

Destaque (20)

Web data from R
Web data from RWeb data from R
Web data from R
 
R by example: mining Twitter for consumer attitudes towards airlines
R by example: mining Twitter for consumer attitudes towards airlinesR by example: mining Twitter for consumer attitudes towards airlines
R by example: mining Twitter for consumer attitudes towards airlines
 
DICOMweb
DICOMwebDICOMweb
DICOMweb
 
Keeping it safe: Securing DICOM
Keeping it safe: Securing DICOMKeeping it safe: Securing DICOM
Keeping it safe: Securing DICOM
 
Integrating Google APIs into Your Applications
Integrating Google APIs into Your ApplicationsIntegrating Google APIs into Your Applications
Integrating Google APIs into Your Applications
 
ASP.NET WEB API
ASP.NET WEB APIASP.NET WEB API
ASP.NET WEB API
 
BlueVia overview
BlueVia overviewBlueVia overview
BlueVia overview
 
Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...
Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...
Mobile Internet Fulfillment Exchange [MIFE] Keynote by Amos Manasseh, Axiata ...
 
SQE - Semantic Query Expansion
SQE - Semantic Query ExpansionSQE - Semantic Query Expansion
SQE - Semantic Query Expansion
 
Cec2010 araujo pereziglesias
Cec2010 araujo pereziglesiasCec2010 araujo pereziglesias
Cec2010 araujo pereziglesias
 
Introduction to API Design: REST and Java
Introduction to API Design: REST and JavaIntroduction to API Design: REST and Java
Introduction to API Design: REST and Java
 
Mobile operators: working together to adopt a standardized API platform, WSO2...
Mobile operators: working together to adopt a standardized API platform, WSO2...Mobile operators: working together to adopt a standardized API platform, WSO2...
Mobile operators: working together to adopt a standardized API platform, WSO2...
 
Enhancing Information Retrieval by Personalization Techniques
Enhancing Information Retrieval by Personalization TechniquesEnhancing Information Retrieval by Personalization Techniques
Enhancing Information Retrieval by Personalization Techniques
 
Tech Meetup: How to build a Rest API in Java
Tech Meetup: How to build a Rest API in JavaTech Meetup: How to build a Rest API in Java
Tech Meetup: How to build a Rest API in Java
 
FHIR and DICOM by Marten Smits
FHIR and DICOM by Marten SmitsFHIR and DICOM by Marten Smits
FHIR and DICOM by Marten Smits
 
Nunit
NunitNunit
Nunit
 
N Unit Presentation
N Unit PresentationN Unit Presentation
N Unit Presentation
 
Conquest for dummies: how to setup a pacs server
Conquest for dummies: how to setup a pacs serverConquest for dummies: how to setup a pacs server
Conquest for dummies: how to setup a pacs server
 
Excellent rest using asp.net web api
Excellent rest using asp.net web apiExcellent rest using asp.net web api
Excellent rest using asp.net web api
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 

Semelhante a Introduction to the Web API

Les Basiques - Web Développement HTML5, CSS3, JS et PHP
Les Basiques - Web  Développement HTML5, CSS3, JS et PHPLes Basiques - Web  Développement HTML5, CSS3, JS et PHP
Les Basiques - Web Développement HTML5, CSS3, JS et PHPHamdi Hmidi
 
Netflix OSS and HATEOAS deployed on production - JavaLand
Netflix OSS and HATEOAS deployed on production - JavaLandNetflix OSS and HATEOAS deployed on production - JavaLand
Netflix OSS and HATEOAS deployed on production - JavaLandJWORKS powered by Ordina
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by GoogleASG
 
Introduction web tech
Introduction web techIntroduction web tech
Introduction web techLiaquat Rahoo
 
HTML5: An Overview
HTML5: An OverviewHTML5: An Overview
HTML5: An OverviewNagendra Um
 
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital.AI
 
State of modern web technologies: an introduction
State of modern web technologies: an introductionState of modern web technologies: an introduction
State of modern web technologies: an introductionMichael Ahearn
 

Semelhante a Introduction to the Web API (20)

Les Basiques - Web Développement HTML5, CSS3, JS et PHP
Les Basiques - Web  Développement HTML5, CSS3, JS et PHPLes Basiques - Web  Développement HTML5, CSS3, JS et PHP
Les Basiques - Web Développement HTML5, CSS3, JS et PHP
 
Ntg web services
Ntg   web servicesNtg   web services
Ntg web services
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Api crash
Api crashApi crash
Api crash
 
Netflix OSS and HATEOAS deployed on production - JavaLand
Netflix OSS and HATEOAS deployed on production - JavaLandNetflix OSS and HATEOAS deployed on production - JavaLand
Netflix OSS and HATEOAS deployed on production - JavaLand
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
 
Introduction web tech
Introduction web techIntroduction web tech
Introduction web tech
 
Php reports sumit
Php reports sumitPhp reports sumit
Php reports sumit
 
web devs ppt.ppsx
web devs ppt.ppsxweb devs ppt.ppsx
web devs ppt.ppsx
 
HTML5: An Overview
HTML5: An OverviewHTML5: An Overview
HTML5: An Overview
 
25444215.pptx
25444215.pptx25444215.pptx
25444215.pptx
 
web development
web developmentweb development
web development
 
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
 
State of modern web technologies: an introduction
State of modern web technologies: an introductionState of modern web technologies: an introduction
State of modern web technologies: an introduction
 
Mini-Training: Let's have a rest
Mini-Training: Let's have a restMini-Training: Let's have a rest
Mini-Training: Let's have a rest
 

Último

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 

Último (20)

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 

Introduction to the Web API

  • 1. An Introduction into the Web API Brad Genereaux | @integratorbrad | about.me/integratorbrad | hcintegrations.ca Web Developers P2P : February 2014
  • 2. Housekeeping • About Me - Brad Genereaux – Healthcare and API developer – Integration Architect at Agfa Healthcare – Blogger about all the API things • Discussion and questions – Ask anytime, or at the end
  • 5. What is an API? • Methods to access data and workflow from an application without using the application itself
  • 7. Why an API? • Not all users are the same – Some want: – Some want / need: – And their needs and wants are ever shifting
  • 8. An API Stack GUI (front-end) API (middle tier) Data Sources (back-end)
  • 9. … sounds like a good framework for Web …
  • 11. What is REST? • Architectural style (not a standard!) • Client server model • Stateless – Idempotency • Cacheable • Layered System • Uniform interface
  • 15. What do I need to REST? Clients • Browsers • Mobile Apps • Desktop Apps Servers • “Capable of HTTP” – – – – – – Java-based .Net-based PHP Ruby Perl Etc.
  • 16. Three levels of REST • Level 1 : Resources • Level 2 : Verbs • Level 3 : HATEOAS
  • 17. Resources, Level 1 REST • • • • /users /users/bob /users/bob/tweets /users/bob/tweets/1
  • 18. Verbs, Level 2 REST • CRUD
  • 19. What is CRUD? • Standard database operations: C reate R ead U pdate D elete
  • 20. Verbs, Level 2 REST • CRUD • GET /tweets (as opposed to /givemethetweets) • POST /tweets (as opposed to /createnewtweet) • PUT /tweets/1 (as opposed to /updatetweet/1) • DELETE /tweets/1 (as opposed to /removetweet/1)
  • 21. RESTful Methods GET Collection URI (such as http://a.com/items/) Element URI (such as http://a.com/items/17) PUT POST DELETE List the items in the collection and some metadata about the items Replace the entire collection with another collection Create a new entry in the collection, and return the reference Delete all the items in the collection Retrieve a specific item in the collection Replace a specific item in the collection; if it doesn't exist, create it Not generally used Delete the specific item in the collection • There are other methods less used (HEAD, OPTIONS, PATCH) for other purposes • Representations of an item are specified by the media type (MIME type) Source: http://en.wikipedia.org/wiki/Representational_state_transfer
  • 22. HATEOAS, Level 3 REST • Hypermedia as the engine of application state "ids" : [ 12345678, 87654321, 11223344 ] "links": [ { "rel": "UserInfo", "href": "https://.../user/12345678" }, { "rel": "Tweets", "href": "https://.../tweet/87654321" }, { "rel": "Messages", "href": "https://.../msgs/11223344" } ]
  • 23. Data Formats (XML and JSON)  XML (135 characters): <tweets> <tweet type="text" id="1"> <text>REST is great!</text> </tweet> <tweet type="text" id="2"> <text>APIs forever!</text> </tweet> </tweets>  JSON (109 characters): { "tweets": [ {"type": "text", "id": "1", "text": "REST is great!"}, {"type": "text", "id": "2", "text": "APIs forever!"} ] }  XML can be validated (XML Schema), stylized (XSL), traversed (XPath), queried (XQuery), transformed (XSLT), and namespaced  JSON is easier
  • 24. What makes for good REST? • Self-documenting • Nouns in path, verbs by HTTP • Complexity under the “?” – i.e., /tweets/?contains=API • Errors use HTTP error code mechanism • As simple as possible, but no simpler
  • 25. REST Alternatives • SOAP (simple object access protocol) • Javascript • XML-RPC • See discussion at http://www.slideshare.net/jmusser/j-musser-ap
  • 26. Important : Know your TTFHW (Time to First Hello World) !
  • 27. API Worst Practices Source: http://www.slideshare.net/jmusser/j-musser-apishotnotgluecon2012 10. Poor error handling 9. Ignoring HTTP rules 8. Exposing your underlying data model 7. Security complexity 6. Unexpected release cycles 5. Poor developer experience 4. Expecting an MVC to give you a great API 3. Assuming if you build it, they will come 2. Inadequate support 1. Poor documentation
  • 29. Authentication and Authorization • Authentication : Who • Authorization : What they are allowed to do • Not your job, but your responsibility
  • 30. Security Frameworks • OAuth – Authorizing services • OpenID – Facebook, Google • LDAP – Enterprise authentication
  • 31. Application Security Threats Input Validation Authentication Session Management Cryptography Authorization Exception Management Configuration Management Parameter Manipulation Sensitive Information Auditing and Logging Source: http://en.wikipedia.org/wiki/Application_security
  • 32. SQL Injection Consider the following pseudo-code: String topic = request.getParameter(“topic"); SQLCommand sql = new SQLCommand("select * from tweets where topic like ‘" + topic + "%’") So what happens if the parameter is: – API – REST – h3ck0rz’; drop table tweets; -Source: http://xkcd.com/327/
  • 34. HTML5 + CSS • “HyperText Markup Language” – Characterized by the DOM (document object model) Completely ubiquitous across the Internet <html> <body> <h1>Hello World</h1> </body> </html> • “Cascading Style Sheets” – Allows for advanced stylization of content – Example: .giant { font-size: 72px; color: blue; }
  • 35. JavaScript • • • • Multi-paradigm weakly-typed scripting language Used most often hand-in-hand with HTML Not Java, at all (syntax based on C) Example: alert (“Hello World!”); • Able to manipulate the DOM and interact with the browser environment
  • 36. AJAX • “Asynchronous JavaScript and XML” • Group of technologies that allow for robust client interactions without reloading web pages – HTML and CSS for presentation – DOM for display and interaction of data – XML for data interchange – XMLHttpRequest for asynchronous communication – JavaScript to bring these technologies together • AJAX is the key to consuming REST
  • 37. jQuery • “jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.” • Example: $(“#h1”).html(“Hello World!”); • jQuery tests against many browser platforms and solves a lot of the problems that supporting many platforms introduces
  • 38. Calling REST with jQuery Verb • Use an AJAX Call Resource $.ajax({ type : "GET", url : "http://a.com/tweets", data : {"contains" : "API"}, dataType : "json", success : function(data){ alert ("Results: " + data); } }); Query parameters Media type
  • 39. Tips • Use “curl” to simulate calls from your command line • Use Chrome debug tools or Firebug to watch traffic and test your Javascript • Use libraries – no need to reinvent the wheel
  • 40. Other Frameworks • • • • UI Frameworks (Bootstrap, Foundation) MVC Frameworks (Angular, Backbone) Tooling (Yeoman, Lineman) Documentation (Apiary, Swagger) • No shortage of options
  • 42. Some REST API Examples • • • • • Facebook Twitter If This, Than That Twilio Demo
  • 43. Facebook Graph API • Every object has an ID: • Objects can be searched: • Objects can be updated:
  • 45. If This, Then That • API Integration Website - http://ifttt.com/
  • 47. Demo
  • 48. Need more REST? • Programmable Web http://programmableweb.com John Musser’s presentations: http://www.slideshare.net/jmusser • Crafting Interfaces that Developers Love http://offers.apigee.com/api-design-ebook-rr/ • API Craft Google Group https:// groups.google.com/forum/#!forum/api-craft

Notas do Editor

  1. Describes a method for a client to communicate with a server If you ever access a website, you are already using REST When you access a page, you are GETting it.
  2. Easy to consume by many platforms Lightweight, payload is almost strictly content Self-documenting Flexible for many environments, including firewalls and load-balancers Just “works” for security and identity frameworks Server and consumer agnostic
  3. Both represent the same data, albeit in different ways JSON is smaller, but with compression, they are ~equivalent XML can be validated (XML Schema), stylized (XSL), traversed (XPath), queried (XQuery), transformed (XSLT), and namespaced JSON has no formally recognized equivalents, which isn’t necessarily a bad thing
  4. I can reasonably guess functionality without needing documentation TTFHW – Time to first hello world