SlideShare a Scribd company logo
1 of 41
Andrew Curioso
Twitter: @AndrewCurioso
#nephp
Pragmatic API Development
Andrew Curioso
What is an API?
● Application Programming Interface
● Web Service
● Contract
Business Case
● Mobile API First
Business Case
● Multiple Devices
Your API
Become a Platform
● Internal
– Multi-platform
– Scalable
● Semi-Public
– Partner Integration
● Public
– Everything+
– Growth
● Mashups
● Innovation
● Evangelism
– “The Platform Play”
Types of APIs
● Representation StateTransfer (REST)
● Remote Procedure Call (RPC)
● Realtime Streaming
What is REST?
● Nouns
● Verbs
● HTTP is inherently RESTful
Why REST
● Intuitive
● Easy to implement in PHP
● Widely accepted
Nouns
● Resources
– Blog post
– User
– Etc.
● Unique URIs
– Example: http://www.example.com/users/1234.json
Verbs
● 5 most common
– GET
– POST
– PUT
– DELETE
– HEAD
Verbs
● Uses
– GET – Read data
– POST and PUT write data
– DELETE and POST delete data
CSRF
● Cross Site Request Forgery
● Vectors:
– Embedded resources (<img>, <script>, etc)
– Hidden forms
security
CSRF
● Never edit data with GET
– Ajax Same origin policy→
● Forms
– Single use tokens
– Referrer check
security
Response Formats
● Json
– Very common for REST APIs
– Simple
– Fast
– Multi-platform
Response Formats
● JsonP
– P Padding→
– Allows reading data cross origin
– GET only
Response Formats
● XML
– Heavy and verbose
– Strictly typed
– Lots of existing tools
Response Formats
● Text
– Json / JsonP
– XML
– HTML
– YAML
– CSV
– Serialized PHP
– Etc.
● Binary
– Microsoft Excel
– PDF
– JPG / PNG / GIF
– MP3
– Etc.
Status Codes
● Success
– 200 OK
– 201 Created
– 301 Permanent Redirect
– 302 Found
– 303 See Other
Status Codes
● Error
– 401 Unauthorized
– 402 Payment Required
– 403 Forbidden
– 404 Not Found
– 405 Method NotAllowed
– 409 Conflict
– 410 Gone
– 500 Internal Server Error
– 501 Not Implemented
– 503 Service Unavailable
Status Codes
● Novelty
– 418 I Am ATeapot
– 415 Unavailable For Legal Reasons
Putting it together
● Getting
– Anything but GET
● 405 Method Not Allowed
– Resource not found
● 404 Not Found
– Success
● 200 OK
– Moved
● 301 Permanent Redirect or 302 Found
Putting it together
● Adding
– Anything but POST
● 405 Method Not Allowed
– Resource already existed
● 303 See Other
– Success
● 201 Created
– Error
● 500 Internal Server Error with description
Putting it together
● Editing
– Anything but PUT or POST
● 405 Method Not Allowed
– Resource does not exist
● 404 Not Found
– Success
● 200 OK
– Error
● 500 Internal Server Error with description
Putting it together
● Deleting
– Anything but DELETE or POST
● 405 Method Not Allowed
– Resource does not exist
● 404 Not Found
– Success
● 200 OK or 204 No Content
– Error
● 500 Internal Server Error with description
Putting it together
● Everything
– Not logged in
● 401 Unauthorized
– Logged in but permission denied
● 403 Forbidden
Putting it together
● Why POST or DELETE/PUT
– Client support
– _method=VERB
● /users.json?_method=POST
Example
● Past bin
● Simple
– No security
Example
● Making it RESTful
1) Identify nouns
2) Write down URI structure
3) Map verbs to the URIs
Example
● GET /documents.json
● POST /documents.json
● GET /documents/{id}.json
● DELETE /documents/{id}.json
● PUT /documents/{id}.json
HATEOAS
● Hypermedia as the Engine of Application
State
– Next state
– Content Negotiation
● Accepts header
Versioning
● URI
● Custom header
● Accepts header
Pagination
● Meta info
– URI to next/prev page (HATEOAS)
– Total count
– Current page
● Methods
– Header
– Document
Errors
● Same format
● Descriptive
{ "error" : { "code" : 404,
"description" : "The resource could not be found",
"name" : "Not Found"
} }
Testing
● GET Web Browser→
● OS X / Linux
– curl
– Example:
curl -X DELETE “
http://www.example.com/document/123.json”
● Automated UnitTests
Authentication
● Who am I?
● Types:
– Basic
– Digest
– OAuth 1 & 2 – No 3rd
party password sharing!
– Cookies
– API keys
● 401 Unauthorized
Authorization
● Can I do that?
● 403 Forbidden
Documentation
● Vocabularies / schemas
● Examples:
– Input
– Output
– Code
● Feedback
● WSDL 2.0
OtherTypes
● RPC
● Streaming
Checklist
✔ Design schema upfront
✔ Identify nouns
✔ Design URI structure
✔ Errors in same format
✔ Proper status codes
✔ Server-side validation
✔ Testing
✔ Documentation
Predictions
● Internet ofThings
● API Economy
● Success
Andrew Curioso
 Contact:
 www.AndrewCurioso.com/contact
 @AndrewCurioso onTwitter

More Related Content

Viewers also liked

Confoo Developing for Wearables
Confoo   Developing for WearablesConfoo   Developing for Wearables
Confoo Developing for WearablesJean-Luc David
 
Innovation & Business Acquisitions of Smart Security
Innovation & Business Acquisitions of Smart SecurityInnovation & Business Acquisitions of Smart Security
Innovation & Business Acquisitions of Smart SecurityJean-Luc David
 
Intro to HTTP and Node.js
Intro to HTTP and Node.jsIntro to HTTP and Node.js
Intro to HTTP and Node.jsJean-Luc David
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBJean-Luc David
 
Venture For Canada - Growing Your Startup
Venture For Canada - Growing Your StartupVenture For Canada - Growing Your Startup
Venture For Canada - Growing Your StartupJean-Luc David
 
Writing Mirror API and Native Apps for Google Glass
Writing Mirror API and Native Apps for Google GlassWriting Mirror API and Native Apps for Google Glass
Writing Mirror API and Native Apps for Google GlassJean-Luc David
 
Lessons from the Trenches: Building an API-Centric Architecture
Lessons from the Trenches: Building an API-Centric ArchitectureLessons from the Trenches: Building an API-Centric Architecture
Lessons from the Trenches: Building an API-Centric ArchitectureWSO2
 
Cakefest 2010: API Development
Cakefest 2010: API DevelopmentCakefest 2010: API Development
Cakefest 2010: API DevelopmentAndrew Curioso
 
Venture For Canada - Growth Hacking
Venture For Canada - Growth HackingVenture For Canada - Growth Hacking
Venture For Canada - Growth HackingJean-Luc David
 
Venture For Canada - Growth Marketing
Venture For Canada - Growth MarketingVenture For Canada - Growth Marketing
Venture For Canada - Growth MarketingJean-Luc David
 
Startup Product Management - Execution
Startup Product Management - ExecutionStartup Product Management - Execution
Startup Product Management - ExecutionJean-Luc David
 
Startup Product Management - Analytics
Startup Product Management - AnalyticsStartup Product Management - Analytics
Startup Product Management - AnalyticsJean-Luc David
 
NEPHP '12: Create a RESTful API
NEPHP '12: Create a RESTful APINEPHP '12: Create a RESTful API
NEPHP '12: Create a RESTful APIAndrew Curioso
 
Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)
Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)
Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)Jean-Luc David
 
Developing For Wearables - Lessons Learned & Best Practices
Developing For Wearables - Lessons Learned & Best PracticesDeveloping For Wearables - Lessons Learned & Best Practices
Developing For Wearables - Lessons Learned & Best PracticesJean-Luc David
 
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?Minoru Yokomichi
 

Viewers also liked (18)

Confoo Developing for Wearables
Confoo   Developing for WearablesConfoo   Developing for Wearables
Confoo Developing for Wearables
 
Innovation & Business Acquisitions of Smart Security
Innovation & Business Acquisitions of Smart SecurityInnovation & Business Acquisitions of Smart Security
Innovation & Business Acquisitions of Smart Security
 
RightCycle
RightCycleRightCycle
RightCycle
 
Intro to HTTP and Node.js
Intro to HTTP and Node.jsIntro to HTTP and Node.js
Intro to HTTP and Node.js
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Venture For Canada - Growing Your Startup
Venture For Canada - Growing Your StartupVenture For Canada - Growing Your Startup
Venture For Canada - Growing Your Startup
 
Writing Mirror API and Native Apps for Google Glass
Writing Mirror API and Native Apps for Google GlassWriting Mirror API and Native Apps for Google Glass
Writing Mirror API and Native Apps for Google Glass
 
Lessons from the Trenches: Building an API-Centric Architecture
Lessons from the Trenches: Building an API-Centric ArchitectureLessons from the Trenches: Building an API-Centric Architecture
Lessons from the Trenches: Building an API-Centric Architecture
 
Cakefest 2010: API Development
Cakefest 2010: API DevelopmentCakefest 2010: API Development
Cakefest 2010: API Development
 
Venture For Canada - Growth Hacking
Venture For Canada - Growth HackingVenture For Canada - Growth Hacking
Venture For Canada - Growth Hacking
 
Venture For Canada - Growth Marketing
Venture For Canada - Growth MarketingVenture For Canada - Growth Marketing
Venture For Canada - Growth Marketing
 
Startup Product Management - Execution
Startup Product Management - ExecutionStartup Product Management - Execution
Startup Product Management - Execution
 
Startup Product Management - Analytics
Startup Product Management - AnalyticsStartup Product Management - Analytics
Startup Product Management - Analytics
 
Code Retreat
Code RetreatCode Retreat
Code Retreat
 
NEPHP '12: Create a RESTful API
NEPHP '12: Create a RESTful APINEPHP '12: Create a RESTful API
NEPHP '12: Create a RESTful API
 
Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)
Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)
Mike Krieger - A Brief, Rapid History of Scaling Instagram (with a tiny team)
 
Developing For Wearables - Lessons Learned & Best Practices
Developing For Wearables - Lessons Learned & Best PracticesDeveloping For Wearables - Lessons Learned & Best Practices
Developing For Wearables - Lessons Learned & Best Practices
 
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
 

Similar to Pragmatic API Development

Principles of building effective REST API
Principles of building effective REST APIPrinciples of building effective REST API
Principles of building effective REST APIGeorgy Podsvetov
 
OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Alliance
 
Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...
Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...
Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...Grand Parade Poland
 
Web API Test Automation using Frisby & Node.js
Web API Test Automation using Frisby  & Node.jsWeb API Test Automation using Frisby  & Node.js
Web API Test Automation using Frisby & Node.jsChi Lang Le Vu Tran
 
Web Services Testing
Web Services TestingWeb Services Testing
Web Services TestingDataArt
 
WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...
WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...
WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...GeeksLab Odessa
 
Pragmatic REST APIs
Pragmatic REST APIsPragmatic REST APIs
Pragmatic REST APIsamesar0
 
rest3d Web3D 2014
rest3d Web3D 2014rest3d Web3D 2014
rest3d Web3D 2014Remi Arnaud
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTPradeep Kumar
 
A Deep Dive into RESTful API Design Part 2
A Deep Dive into RESTful API Design Part 2A Deep Dive into RESTful API Design Part 2
A Deep Dive into RESTful API Design Part 2VivekKrishna34
 
RESTful for opentravel.org by HP
RESTful for opentravel.org by HPRESTful for opentravel.org by HP
RESTful for opentravel.org by HPRoni Schuetz
 
REST Api Tips and Tricks
REST Api Tips and TricksREST Api Tips and Tricks
REST Api Tips and TricksMaksym Bruner
 
nguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-servicenguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-servicehazzaz
 
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...Nguyen Duc Phu
 

Similar to Pragmatic API Development (20)

Rest api-basic
Rest api-basicRest api-basic
Rest api-basic
 
Principles of building effective REST API
Principles of building effective REST APIPrinciples of building effective REST API
Principles of building effective REST API
 
OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML Resources
 
Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...
Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...
Mateusz Gruszczynski - Performance tests in Gatling (Quality Questions Confer...
 
Web API Test Automation Using Frisby & Node.js
Web API Test Automation Using Frisby  & Node.jsWeb API Test Automation Using Frisby  & Node.js
Web API Test Automation Using Frisby & Node.js
 
Web API Test Automation using Frisby & Node.js
Web API Test Automation using Frisby  & Node.jsWeb API Test Automation using Frisby  & Node.js
Web API Test Automation using Frisby & Node.js
 
Web Services Testing
Web Services TestingWeb Services Testing
Web Services Testing
 
Power of REST - قوة الرست
Power of REST - قوة الرستPower of REST - قوة الرست
Power of REST - قوة الرست
 
Attacking REST API
Attacking REST APIAttacking REST API
Attacking REST API
 
WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...
WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...
WebCamp: Developer Day: Принципы построения эффективного REST API - Георгий П...
 
Pragmatic REST APIs
Pragmatic REST APIsPragmatic REST APIs
Pragmatic REST APIs
 
rest3d Web3D 2014
rest3d Web3D 2014rest3d Web3D 2014
rest3d Web3D 2014
 
BeJUG JAX-RS Event
BeJUG JAX-RS EventBeJUG JAX-RS Event
BeJUG JAX-RS Event
 
Webservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and RESTWebservices Overview : XML RPC, SOAP and REST
Webservices Overview : XML RPC, SOAP and REST
 
A Deep Dive into RESTful API Design Part 2
A Deep Dive into RESTful API Design Part 2A Deep Dive into RESTful API Design Part 2
A Deep Dive into RESTful API Design Part 2
 
RESTful for opentravel.org by HP
RESTful for opentravel.org by HPRESTful for opentravel.org by HP
RESTful for opentravel.org by HP
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
REST Api Tips and Tricks
REST Api Tips and TricksREST Api Tips and Tricks
REST Api Tips and Tricks
 
nguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-servicenguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-service
 
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
 

Recently uploaded

Russian Call Girls Kolkata Indira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Indira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Indira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Indira 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
VIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our Escorts
VIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our EscortsVIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our Escorts
VIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our Escortssonatiwari757
 
High Profile Call Girls Kolkata Trisha 🤌 8250192130 🚀 Vip Call Girls Kolkata
High Profile Call Girls Kolkata Trisha 🤌  8250192130 🚀 Vip Call Girls KolkataHigh Profile Call Girls Kolkata Trisha 🤌  8250192130 🚀 Vip Call Girls Kolkata
High Profile Call Girls Kolkata Trisha 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书
如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书
如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书Fis s
 
如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书
如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书
如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书Fir La
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...aditipandeya
 
如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书
如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书
如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书Fir La
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girladitipandeya
 
VIP Kolkata Call Girls Bidhannagar 8250192130 Available With Room
VIP Kolkata Call Girls Bidhannagar 8250192130 Available With RoomVIP Kolkata Call Girls Bidhannagar 8250192130 Available With Room
VIP Kolkata Call Girls Bidhannagar 8250192130 Available With Roomrran7532
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call Girladitipandeya
 

Recently uploaded (20)

Russian Call Girls Kolkata Indira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Indira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls Kolkata Indira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls Kolkata Indira 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
VIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our Escorts
VIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our EscortsVIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our Escorts
VIP Call Girl Amritsar 7001035870 Enjoy Call Girls With Our Escorts
 
Falcon Invoice Discounting - Best Platform
Falcon Invoice Discounting - Best PlatformFalcon Invoice Discounting - Best Platform
Falcon Invoice Discounting - Best Platform
 
High Profile Call Girls Kolkata Trisha 🤌 8250192130 🚀 Vip Call Girls Kolkata
High Profile Call Girls Kolkata Trisha 🤌  8250192130 🚀 Vip Call Girls KolkataHigh Profile Call Girls Kolkata Trisha 🤌  8250192130 🚀 Vip Call Girls Kolkata
High Profile Call Girls Kolkata Trisha 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书
如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书
如何办理(UTS毕业证书)悉尼科技大学毕业证学位证书
 
Call Girls 🫤 Mahipalpur ➡️ 9999965857 ➡️ Delhi 🫦 Russian Escorts FULL ENJOY
Call Girls 🫤 Mahipalpur ➡️ 9999965857  ➡️ Delhi 🫦  Russian Escorts FULL ENJOYCall Girls 🫤 Mahipalpur ➡️ 9999965857  ➡️ Delhi 🫦  Russian Escorts FULL ENJOY
Call Girls 🫤 Mahipalpur ➡️ 9999965857 ➡️ Delhi 🫦 Russian Escorts FULL ENJOY
 
如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书
如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书
如何办理密苏里大学堪萨斯分校毕业证(文凭)UMKC学位证书
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...
VIP 7001035870 Find & Meet Hyderabad Call Girls Banjara Hills high-profile Ca...
 
Rohini Sector 15 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 15 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 15 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 15 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Rohini Sector 17 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 17 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 17 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 17 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Model Call Girl in Uttam Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Uttam Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Uttam Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Uttam Nagar Delhi reach out to us at 🔝9953056974🔝
 
如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书
如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书
如何办理北卡罗来纳大学教堂山分校毕业证(文凭)UNC学位证书
 
Russian Call Girls Rohini Sector 22 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...
Russian Call Girls Rohini Sector 22 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...Russian Call Girls Rohini Sector 22 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...
Russian Call Girls Rohini Sector 22 💓 Delhi 9999965857 @Sabina Modi VVIP MODE...
 
Call Girls 🫤 Nehru Place ➡️ 9999965857 ➡️ Delhi 🫦 Russian Escorts FULL ENJOY
Call Girls 🫤 Nehru Place ➡️ 9999965857  ➡️ Delhi 🫦  Russian Escorts FULL ENJOYCall Girls 🫤 Nehru Place ➡️ 9999965857  ➡️ Delhi 🫦  Russian Escorts FULL ENJOY
Call Girls 🫤 Nehru Place ➡️ 9999965857 ➡️ Delhi 🫦 Russian Escorts FULL ENJOY
 
Call Girls 🫤 East Of Kailash ➡️ 9999965857 ➡️ Delhi 🫦 Russian Escorts FULL ...
Call Girls 🫤 East Of Kailash ➡️ 9999965857  ➡️ Delhi 🫦  Russian Escorts FULL ...Call Girls 🫤 East Of Kailash ➡️ 9999965857  ➡️ Delhi 🫦  Russian Escorts FULL ...
Call Girls 🫤 East Of Kailash ➡️ 9999965857 ➡️ Delhi 🫦 Russian Escorts FULL ...
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Abids high-profile Call Girl
 
VIP Kolkata Call Girls Bidhannagar 8250192130 Available With Room
VIP Kolkata Call Girls Bidhannagar 8250192130 Available With RoomVIP Kolkata Call Girls Bidhannagar 8250192130 Available With Room
VIP Kolkata Call Girls Bidhannagar 8250192130 Available With Room
 
VIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls Shamirpet high-profile Call Girl
 
Preet Vihar (Delhi) 9953330565 Escorts, Call Girls Services
Preet Vihar (Delhi) 9953330565 Escorts, Call Girls ServicesPreet Vihar (Delhi) 9953330565 Escorts, Call Girls Services
Preet Vihar (Delhi) 9953330565 Escorts, Call Girls Services
 
@9999965857 🫦 Sexy Desi Call Girls Karol Bagh 💓 High Profile Escorts Delhi 🫶
@9999965857 🫦 Sexy Desi Call Girls Karol Bagh 💓 High Profile Escorts Delhi 🫶@9999965857 🫦 Sexy Desi Call Girls Karol Bagh 💓 High Profile Escorts Delhi 🫶
@9999965857 🫦 Sexy Desi Call Girls Karol Bagh 💓 High Profile Escorts Delhi 🫶
 

Pragmatic API Development

Editor's Notes

  1. Thank you _____________ Today I’m going to be talking about creating a RESTful API with PHP. Not just any RESTful API, but an Epic one. &amp;lt;number&amp;gt;