SlideShare uma empresa Scribd logo
1 de 175
Baixar para ler offline
DESIGNING BEAUTIFUL
     REST APIs
      @tomekcejner
THE PRESENTER
THE PRESENTER
   TOMEK CEJNER
    @tomekcejner
   www.japko.net
  tomek@japko.net
THE PRESENTER
   TOMEK CEJNER
    @tomekcejner
   www.japko.net
  tomek@japko.net
FASHION
WHAT REST MEANS
NO FRAMEWORKS
APPLICATIONS
APPLICATIONS
 GOING OPEN
APPLICATIONS
 GOING OPEN
  GOING BIG
SOA
LOOSE COUPLING
LOOSE COUPLING
SMALLER CODEBASE
LOOSE COUPLING
SMALLER CODEBASE
   REUSABILITY
WEB SERVICES
WORLDS BIGGEST APP EVER
WORLD WIDE WEB
WHAT IS REST?
A PROTOCOL?
A PROTOCOL?
    NO
A SPECIFICATION?
A SPECIFICATION?
       NO
ARCHITECTURAL STYLE
ROY T. FIELDING
PHD DISSERTATION
http://www.w3.org/Protocols/rfc2616/rfc2616.html
BUILDING ARCHITECTURE
BUILDING ARCHITECTURE
    FROM SCRATCH
BUILDING ARCHITECTURE
    FROM SCRATCH
     FROM WHOLE
CONSTRAINTS
CONSTRAINTS
CLIENT-SERVER
CONSTRAINTS
CLIENT-SERVER
  STATELESS
CONSTRAINTS
CLIENT-SERVER
  STATELESS
  CACHEABLE
CONSTRAINTS
  CLIENT-SERVER
    STATELESS
    CACHEABLE
UNIFORM INTERFACE
RESOURCE
URI

http://www.example.com/blogs/423/entries/12340
http://www.example.com/sales/2004/Q4
http://www.example.com/bugs/by-state/open
URI


http://api.example.com/places/42.089199,93.076172
http://api.example.com/color-blends/yellow;blue
URI


http://api.example.com/items?price_min=0&price_max=599
URI


http://api.example.com/auctions/239841/cancel
URI


http://api.example.com/auctions/239841/cancel
RICHARDSON MATURITY MODEL


   http://www.crummy.com/writing/speaking/2008-QCon/act3.html
LEVEL 0
LEVEL 0
 HELL
POST /auctionServiceAPIEndpoint HTTP/1.1

<query>
  <params>
    <name>Macbook Air</name>
    <price_from>0</price_from>
    <price_to>1000</price_to>
  </params>
</query>
HTTP/1.1 200 OK

<items>
   <item>
      <id>123</id>
      <name>Macbook Air</name>
      <price>499</price>
      <condition>NEW</condition>
   </item>
</items>
LEVEL 1
LEVEL 1
  URI
POST /auctions/1234/read
POST /auctions/1234/read
GET /auctions/1234/read
POST /auctions/1234/read
GET /auctions/1234/read
POST /auctions/create
POST /auctions/1234/read
GET /auctions/1234/read
POST /auctions/create
POST /auctions/1234/update
LEVEL 2
 HTTP
/auctions
/auctions
/auctions/1234
GET
GET
POST
GET
POST
PUT
GET
 POST
 PUT
DELETE
GET
 POST
  PUT
DELETE
 HEAD
GET
  POST
   PUT
 DELETE
  HEAD
OPTIONS
GET
  POST
   PUT
 DELETE
  HEAD
OPTIONS
 PATCH
GET
GET /auctions
GET /auctions
GET /auctions/1234
GET /auctions
GET /auctions/1234
GET /auctions?search=Macbook+Air
SAFE + IDEMPOTENT
TESLA MODEL S
IT HAS A RESTFUL API
GET http://api.flickr.com/services/rest?
method=flickr.photos.people.add&api_key=xxx&photo_id=yyy&user
_id=zzz
DELETE
DELETE

DELETE /auctions/1234
DELETE

DELETE /auctions/1234

HTTP/1.1 204 No Content
DON’T DO THIS AT HOME
DELETE
DELETE
IDEMPOTENT
DELETE
IDEMPOTENT
  NOT SAFE
POST
POST /items
{
! "name" : "Macbook Air 2010",
! "condition" : "NEW",
! "price" : 499
}
POST /items
{
! "name" : "Macbook Air 2010",
! "condition" : "NEW",
! "price" : 499
}




201 Created
Location: http://api.alledrogo.com/items/1235
POST
POST
NOT IDEMPOTENT
POST
NOT IDEMPOTENT
   NOT SAFE
PUT
PUT /items/1235

{
  "name" : "Macbook Air 2010",
! "condition" : "LIKE_NEW",
! "price" : 498
}
PUT /users/joe

{
    “first_name” : “Joe”,
    “last_name” : “Smith”
}
PUT
IDEMPOTENT
  NOT SAFE
POST: ID FROM SERVER
POST: ID FROM SERVER
 PUT: ID FROM CLIENT
OPTIONS
OPTIONS
DISCOVERY
OPTIONS /users HTTP/1.1

...
HTTP/1.1 204 No Content
Allow: GET, POST, PUT
/users      /users/456


 GET      GET ALL      GET USER
POST     CREATE NEW        -
 PUT         -          UPDATE
DELETE   DELETE ALL   DELETE USER
HTTP STATUS CODES
SUCCESS
SUCCESS
200 OK
SUCCESS
200 OK
201 CREATED
SUCCESS
200 OK
201 CREATED
202 ACCEPTED
SUCCESS
200 OK
201 CREATED
202 ACCEPTED
204 NO CONTENT
201 CREATED
POST /items/1234/bids
{
! "amount" : 602.99
}



201 Created
Location: http://api.alledrogo.com/items/1234/bids/100001
{
! "cap_amount" : 602.99,
! "current_bid" : 510,
! "winning" : true
}
REDIRECT
REDIRECT
301 MOVED PERMANENTLY
REDIRECT
301 MOVED PERMANENTLY
303 SEE OTHER
REDIRECT
301 MOVED PERMANENTLY
303 SEE OTHER
304 NOT MODIFIED
REDIRECT
301 MOVED PERMANENTLY
303 SEE OTHER
304 NOT MODIFIED
307 TEMPORARY REDIRECT
USER ERROR
USER ERROR
400 BAD REQUEST
USER ERROR
400 BAD REQUEST
401 UNAUTHORIZED
USER ERROR
400 BAD REQUEST
401 UNAUTHORIZED
403 FORBIDDEN
http://cropp.com/404
405 METHOD NOT ALLOWED
409 CONFLICT
410 GONE
SERVER ERROR
SERVER ERROR
500 INTERNAL SERVER ERROR
SERVER ERROR
500 INTERNAL SERVER ERROR
503 SERVICE UNAVAILABLE
DON’T IGNORE HTTP STATUS
DON’T IGNORE HTTP STATUS
http://api.flickr.com/services/rest?
method=flickr.photos.people.add&api_key=xxx&photo_id=yyy&user_id=zzz
DON’T IGNORE HTTP STATUS
http://api.flickr.com/services/rest?
method=flickr.photos.people.add&api_key=xxx&photo_id=yyy&user_id=zzz




HTTP/200 OK
DON’T IGNORE HTTP STATUS
http://api.flickr.com/services/rest?
method=flickr.photos.people.add&api_key=xxx&photo_id=yyy&user_id=zzz




HTTP/200 OK




<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="fail">
    <err code="100" msg="Invalid API Key (Key has invalid format)" />
</rsp>
LEVEL 3
LEVEL 3
HYPERMEDIA
LINKING
SELF DESCRIBED
  CAPABILITIES
INTERCONNECTION
PRESENTATION
   XHTML
     XML
    ATOM
      ...
NO HYPERMEDIA
GET   /items?q=macbook+air+new
{
!     "results" : [
!     !   {
!     !   !   "id" : 1234,
!     !   !   "name" : "Macbook Air 2010 LIKE NEW",
!     !   !   "price" : "499"
!     !   }
!     ]
}
WITH HYPERMEDIA
GET   /items?q=macbook+air+new
{
!     "results" : [
!     !   {
!     !   !   "_links" : [
!     !   !   !    { "rel" : "self", "uri" : "/items/1234" },
!     !   !   !    { "rel" : "bids", "uri" : "/items/1234/bids" },
!     !   !   !    { "rel" : "highest_bid", "uri" : "/items/1234/bids?q=winning" }
!     !   !   ],
!     !   !   "name" : "Macbook Air 2010 LIKE NEW",
!     !   !   "price" : "499"
!     !   }
!     ]
}
GET   /items/1234
{
!     "_links" : [
!     !   { "rel" : "self", "uri" : "/items/1234" },
!     !   { "rel" : "bids", "uri" : "/items/1234/bids"},
!     !   { "rel" : "seller", "uri" : "/users/9876"}
!     ],
!     "name" : "Macbook Air 2010 LIKE NEW",
!     "price" : "499"
}
GET   /users/9876
{
!     "_links" : [
!     !   { "rel" : "self", "uri" : "/users/9876" },
!     !   { "rel" : "ratings", "uri" : "/users/9876/ratings" }
!     !   { "rel" : "messages", "uri" : "/users/9876/messages" }
!     !   { "rel" : "listings", "uri" : "/users/9876/listings" }
!     ],
!     "name" : "John Doe"
}
POST /items/1234/bids
{
!   "amount" : 602.99
}
POST /items/1234/bids
{
!   "amount" : 602.99
}




201 Created
Location: http://api.alledrogo.com/items/1234/bids/100001
{
!   "_links" : [
!   !   { "rel" : "self", "uri" : "/items/1234/bids/100001" },
!   !   { "rel" : "item", "uri" : "/items/1234" },
!   ]
!   "cap_amount" : 602.99,
!   "current_bid" : 510,
!   "winning" : true
}
DOMAIN APPLICATION PROTOCOL
HATEOAS
HATEOAS
HYPERMEDIA
HATEOAS
HYPERMEDIA
    AS
HATEOAS
HYPERMEDIA
    AS
THE ENGINE
HATEOAS
    HYPERMEDIA
         AS
     THE ENGINE
OF APPLICATION STATE
IN PRACTICE
AUCTION SERVICE - USERS
AUCTION SERVICE - USERS

doGetMyData
doGetUserID
doGetUserItems
doShowUser
doShowUserPage
AUCTION SERVICE - USERS

doGetMyData            GET   /users/me
doGetUserID            GET   /users?name=czesio
doGetUserItems         GET   /users/123456/items
doShowUser             GET   /users/123456/details
doShowUserPage         GET   /users/123456/aboutpage
AUCTION SERVICE - MY AUCTIONS
AUCTION SERVICE - MY AUCTIONS

doGetFavouriteCategories
doGetFavouriteSellers
doGetMyBidItems
doGetMyWatchItems
doGetMySoldItems
doRemoveFromWatchList
AUCTION SERVICE - MY AUCTIONS

doGetFavouriteCategories   GET /users/me/favorites/category
doGetFavouriteSellers      GET /users/me/favorites/sellers
doGetMyBidItems            GET /users/me/bids
doGetMyWatchItems          GET /users/me/items/watching
doGetMySoldItems           GET /users/me/items/sold
doRemoveFromWatchList      DELETE /users/me/items/watching/1
AUCTION SERVICE - BIDDING
AUCTION SERVICE - BIDDING


doBidItem
doRequestCancelBid
AUCTION SERVICE - BIDDING


doBidItem               POST /items/54321/bids
doRequestCancelBid      DELETE /items/54321/bids/678
BEYOND CRUD
COPY
GET /items/5001

HTTP/1.1 200 OK
{
  “_links” : [
     { “rel” : “self”,
        “href” : “/items/5001”
     },
     { “rel” : “duplicate”,
        “href” : “/items/5001/duplicate;t=37489231614874”
     }
  ],
  “name” : “MacBook Air”,
  “price” : 599
}
COPY

POST /items/5001/duplicate;t=37489231614874

HTTP/1.1 201 Created
Location: /items/5002
SNAPSHOT
PUT /items/5002

{
    “name” : “MacBook Air”,
    “price” : 399
}

HTTP/1.1 204 No Content
SNAPSHOT
GET /items/5002

{
    “_links” : [
      { “rel” : “self”,
         “href” : “/items/5002”
      },
      { “rel” : “duplicate”,
         “href” : “/items/5002/duplicate;t=98435943498”
      },
      { “rel” : “previous”,
         “href” : “/items/5002/s1”
      },
      { “rel” : “undo”,
         “href” : “/items/5002/undo;t=92312093”
      },

    ],
    “name” : “MacBook Air”,
    “price” : 599
}
UNDO

POST /items/5002/undo;t=92312093

HTTP/1.1 303 See Other
Location: /items/5002
ASYNCHRONOUS OPERATION
ASYNCHRONOUS OPERATION
POST /projects/123/tasks
{
   “type” : “REPORT”,
   “date_from” : “20130101”,
   “date_to” : “20130331”
}
ASYNCHRONOUS OPERATION
POST /projects/123/tasks
{
   “type” : “REPORT”,
   “date_from” : “20130101”,
   “date_to” : “20130331”
}

HTTP/1.1 202 Accepted
{
   “state” : “PENDING”,
   “ping-after” : “2013-04-12T17:02:32Z”
   “_links” : [
      { “rel” : ”outcome”,
        “href” : “http://api.example.com/reports/882” },
   ]
}
MEDIA TYPES
MEDIA TYPES


Content-Type: application/vnd.alledrogo+xml
MEDIA TYPES


Content-Type: application/vnd.alledrogo+xml
Content-Type: text/html
REST VS SOAP/RPC
REST VS SOAP/RPC
COMPLEMENT, NOT CONCURRENT
NATURE OF THE WEB
CALL IT REST
CALL IT REST
WHEN DOING IT REST
THANK YOU!

Mais conteúdo relacionado

Mais procurados

BDD - Writing better scenario
BDD - Writing better scenarioBDD - Writing better scenario
BDD - Writing better scenarioArnauld Loyer
 
Acceptance Testing with Webrat
Acceptance Testing with WebratAcceptance Testing with Webrat
Acceptance Testing with WebratLuismi Cavallé
 
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)James Titcumb
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012Nicholas Zakas
 
Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)James Titcumb
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flexdanielwanja
 
Paul Bunkham at WP-Brighton 2011 - WordPress and eCommerce
Paul Bunkham at WP-Brighton 2011 - WordPress and eCommercePaul Bunkham at WP-Brighton 2011 - WordPress and eCommerce
Paul Bunkham at WP-Brighton 2011 - WordPress and eCommerceWP-Brighton
 
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo ÁgilDesafios do Profissionalismo Ágil
Desafios do Profissionalismo ÁgilVictor Hugo Germano
 
Simple Web Apps With Sinatra
Simple Web Apps With SinatraSimple Web Apps With Sinatra
Simple Web Apps With Sinatraa_l
 
HTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAXHTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAXRobert Nyman
 
HTML5 and CSS3 Shizzle
HTML5 and CSS3 ShizzleHTML5 and CSS3 Shizzle
HTML5 and CSS3 ShizzleChris Mills
 
Progressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, JapanProgressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, JapanRobert Nyman
 
Integrating WordPress With Web APIs
Integrating WordPress With Web APIsIntegrating WordPress With Web APIs
Integrating WordPress With Web APIsrandyhoyt
 

Mais procurados (20)

SlideShare Instant
SlideShare InstantSlideShare Instant
SlideShare Instant
 
BDD - Writing better scenario
BDD - Writing better scenarioBDD - Writing better scenario
BDD - Writing better scenario
 
Acceptance Testing with Webrat
Acceptance Testing with WebratAcceptance Testing with Webrat
Acceptance Testing with Webrat
 
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 
Paul Bunkham at WP-Brighton 2011 - WordPress and eCommerce
Paul Bunkham at WP-Brighton 2011 - WordPress and eCommercePaul Bunkham at WP-Brighton 2011 - WordPress and eCommerce
Paul Bunkham at WP-Brighton 2011 - WordPress and eCommerce
 
Borrador del blog
Borrador del blogBorrador del blog
Borrador del blog
 
Api
ApiApi
Api
 
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo ÁgilDesafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
 
Simple Web Apps With Sinatra
Simple Web Apps With SinatraSimple Web Apps With Sinatra
Simple Web Apps With Sinatra
 
Java Script
Java ScriptJava Script
Java Script
 
HTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAXHTML5 - The 2012 of the Web - Adobe MAX
HTML5 - The 2012 of the Web - Adobe MAX
 
SocketStream
SocketStreamSocketStream
SocketStream
 
HTML5 and CSS3 Shizzle
HTML5 and CSS3 ShizzleHTML5 and CSS3 Shizzle
HTML5 and CSS3 Shizzle
 
1cst
1cst1cst
1cst
 
Progressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, JapanProgressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
Progressive Web Apps keynote, Google Developer Summit, Tokyo, Japan
 
Integrating WordPress With Web APIs
Integrating WordPress With Web APIsIntegrating WordPress With Web APIs
Integrating WordPress With Web APIs
 

Destaque

Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Extend your REST API
Extend your REST APIExtend your REST API
Extend your REST APIAlexey Tokar
 
RTBkit 2.0 Roadmap Preview
RTBkit 2.0 Roadmap PreviewRTBkit 2.0 Roadmap Preview
RTBkit 2.0 Roadmap PreviewDatacratic
 
Design Guidelines and Lighting in your Downtowns
Design Guidelines and Lighting in your DowntownsDesign Guidelines and Lighting in your Downtowns
Design Guidelines and Lighting in your DowntownsThe Cecil Group
 
Pragmatic REST: recent trends in API design
Pragmatic REST: recent trends in API designPragmatic REST: recent trends in API design
Pragmatic REST: recent trends in API designMarsh Gardiner
 
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
 
Rest API with Swagger and NodeJS
Rest API with Swagger and NodeJSRest API with Swagger and NodeJS
Rest API with Swagger and NodeJSLuigi Saetta
 
Secure rest api on microservices vws2016
Secure rest api on microservices  vws2016Secure rest api on microservices  vws2016
Secure rest api on microservices vws2016Quý Nguyễn Minh
 
Introduction to ACI APIs
Introduction to ACI APIsIntroduction to ACI APIs
Introduction to ACI APIsCisco DevNet
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reesebuildacloud
 
REST API Recommendations
REST API RecommendationsREST API Recommendations
REST API RecommendationsJeelani Shaik
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and MicroservicesShaun Abram
 

Destaque (20)

Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Extend your REST API
Extend your REST APIExtend your REST API
Extend your REST API
 
RTBkit 2.0 Roadmap Preview
RTBkit 2.0 Roadmap PreviewRTBkit 2.0 Roadmap Preview
RTBkit 2.0 Roadmap Preview
 
Rest api design
Rest api designRest api design
Rest api design
 
Design Guidelines and Lighting in your Downtowns
Design Guidelines and Lighting in your DowntownsDesign Guidelines and Lighting in your Downtowns
Design Guidelines and Lighting in your Downtowns
 
L18 REST API Design
L18 REST API DesignL18 REST API Design
L18 REST API Design
 
REST, RESTful API
REST, RESTful APIREST, RESTful API
REST, RESTful API
 
Api Design
Api DesignApi Design
Api Design
 
Pragmatic REST: recent trends in API design
Pragmatic REST: recent trends in API designPragmatic REST: recent trends in API design
Pragmatic REST: recent trends in API design
 
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
 
Coherent REST API design
Coherent REST API designCoherent REST API design
Coherent REST API design
 
REST full API Design
REST full API DesignREST full API Design
REST full API Design
 
Rest API with Swagger and NodeJS
Rest API with Swagger and NodeJSRest API with Swagger and NodeJS
Rest API with Swagger and NodeJS
 
Secure rest api on microservices vws2016
Secure rest api on microservices  vws2016Secure rest api on microservices  vws2016
Secure rest api on microservices vws2016
 
Introduction to ACI APIs
Introduction to ACI APIsIntroduction to ACI APIs
Introduction to ACI APIs
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reese
 
REST API Design
REST API DesignREST API Design
REST API Design
 
API Design - 3rd Edition
API Design - 3rd EditionAPI Design - 3rd Edition
API Design - 3rd Edition
 
REST API Recommendations
REST API RecommendationsREST API Recommendations
REST API Recommendations
 
REST and Microservices
REST and MicroservicesREST and Microservices
REST and Microservices
 

Semelhante a Designing beautiful REST APIs

Rest experience-report
Rest experience-reportRest experience-report
Rest experience-reportJim Barritt
 
Building Awesome APIs in Grails
Building Awesome APIs in GrailsBuilding Awesome APIs in Grails
Building Awesome APIs in Grailsclatimer
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API DesignOCTO Technology
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsJustin James
 
Api development with rails
Api development with railsApi development with rails
Api development with railsEdwin Cruz
 
OpenTox API introductory presentation
OpenTox API introductory presentationOpenTox API introductory presentation
OpenTox API introductory presentationPantelis Sopasakis
 
Socket applications
Socket applicationsSocket applications
Socket applicationsJoão Moura
 
Diseño y Desarrollo de APIs
Diseño y Desarrollo de APIsDiseño y Desarrollo de APIs
Diseño y Desarrollo de APIsRaúl Neis
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)James Titcumb
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesNCCOMMS
 
Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4DEVCON
 
Real-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampReal-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampAlexei Gorobets
 
Applications: A Series of States
Applications: A Series of StatesApplications: A Series of States
Applications: A Series of StatesTrek Glowacki
 
Designing and Running a GraphQL API
Designing and Running a GraphQL APIDesigning and Running a GraphQL API
Designing and Running a GraphQL APIAtlassian
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberKMS Technology
 

Semelhante a Designing beautiful REST APIs (20)

Rest experience-report
Rest experience-reportRest experience-report
Rest experience-report
 
Building Awesome APIs in Grails
Building Awesome APIs in GrailsBuilding Awesome APIs in Grails
Building Awesome APIs in Grails
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
Ws rest
Ws restWs rest
Ws rest
 
Socket.IO
Socket.IOSocket.IO
Socket.IO
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API Design
 
StirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with SailsStirTrek 2018 - Rapid API Development with Sails
StirTrek 2018 - Rapid API Development with Sails
 
ApacheCon 2005
ApacheCon 2005ApacheCon 2005
ApacheCon 2005
 
Api development with rails
Api development with railsApi development with rails
Api development with rails
 
OpenTox API introductory presentation
OpenTox API introductory presentationOpenTox API introductory presentation
OpenTox API introductory presentation
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
Mashing Up The Guardian
Mashing Up The GuardianMashing Up The Guardian
Mashing Up The Guardian
 
Diseño y Desarrollo de APIs
Diseño y Desarrollo de APIsDiseño y Desarrollo de APIs
Diseño y Desarrollo de APIs
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
 
Spca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_librariesSpca2014 hillier 3rd party_javascript_libraries
Spca2014 hillier 3rd party_javascript_libraries
 
Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4
 
Real-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampReal-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @Moldcamp
 
Applications: A Series of States
Applications: A Series of StatesApplications: A Series of States
Applications: A Series of States
 
Designing and Running a GraphQL API
Designing and Running a GraphQL APIDesigning and Running a GraphQL API
Designing and Running a GraphQL API
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
 

Último

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Designing beautiful REST APIs