SlideShare a Scribd company logo
There
is
a
better
way
octo.com
Quick Reference Card
Res+ful
API
Design
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

As soon as we start working on an API, design issues arise. A robust and
strong design is a key factor for API success. A poorly designed API will
indeed lead to misuse or – even worse – no use at all by its intended clients:
application developers.
Creating and providing a state of the art API requires taking into account:

RESTful API principles as described in the literature (Roy Fielding, Leonard Richardson,
Martin Fowler, HTTP specification…)

The API practices of the Web Giants
Nowadays, two opposing approaches are seen.
“Purists” insist upon following REST principles without compromise. “Pragmatics” prefer
a more practical approach, to provide their clients with a more usable API. The proper
solution often lies in between.
Designing a REST API raises questions and issues for which there is no universal answer.
REST best practices are still being debated and consolidated, which is what makes this
job fascinating.
To facilitate and accelerate the design and development of your APIs, we share our
vision and beliefs with you in this Reference Card. They come from our direct experience
on API projects.
RESTful API
Design.
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

Why an API
strategy ?
“Anytime,Anywhere,Any device” are the key problems of
digitalisation. API is the answer to “Business Agility” as it
allows to build rapidly new GUI for upcoming devices.
An API layer enables

Cross device

Cross channel

360° customer view
Open API allows

To outsource innovation

To create new business
models
Embrace WOA
“Web Oriented Architecture”

Build a fast, scalable  secured
REST API

Based on: REST, HATEOAS,
Stateless decoupled µ-services,
Asynchronous patterns, OAuth2
and OpenID Connect protocols

Leverage the power of your
existing web infrastructure
DISCLAMER
This Reference Card doesn’t claim to be absolutely accurate. The design
concepts exposed result from our previous work in the REST area. Please
check out our blog http://blog.octo.com, and feel free to comment or
challenge this API cookbook. We are really looking forward to sharing with
you.
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

HTTP STATUS CODE DESCRIPTION
SUCCESS
200 OK
• 
Basic success code. Works for the general cases.
• 
Especially used on successful first GET requests or PUT/PATCH updated content.
201 Created • 
Indicates that a resource was created. Typically responding to PUT and POST requests.
202 Accepted
• 
Indicates that the request has been accepted for processing.
• 
Typically responding to an asynchronous processing call (for a better UX and good performances).
204 No Content • 
The request succeeded but there is nothing to show. Usually sent after a successful DELETE.
206 Partial Content • 
The returned resource is incomplete. Typically used with paginated resources.
HTTP Status codes.
SERVER ERROR
400 Bad Request
General error for a request that cannot be processed.
CLIENT ERROR
GET /bookings?paid=true
→ 400 Bad Request
→ {error:invalid_request, error_description:There is no ‘paid’ property}
401 Unauthorized
I do not know you, tell me who you are and I will check your permissions.
GET /bookings/42
→ 401 Unauthorized
→ {error”:no_credentials, error_description:You must be authenticated}
403 Forbidden
Your rights are not sufficient to access this resource.
GET /bookings/42
→ 403 Forbidden
→ {error:protected_resource, error_description:You need sufficient rights}
404 Not Found
The resource you are requesting does not exist.
GET /hotels/999999
→ 404 Not Found
→ {error:not_found, error_description: The hotel ‘999999’ does not exist}
405 Method Not Allowed
Either the method is not supported or relevant on this resource or the user does not have the permission.
PUT /hotels/999999
→ 405 Method Not Allowed
→ {error:not_implemented, error_description:Hotel creation not implemented}
406 Not Acceptable
There is nothing to send that matches the Accept-* headers. For example, you requested a resource in XML
but it is only available in JSON.
GET /hotels
Accept-Language: cn
→ 406 Not Acceptable
→ {error: not_acceptable, error_description:Available languages: en, fr}
The request seems right, but a problem occurred on the server. The client cannot do anything about that.
GET /users
→ 500 Internal server error
→ {error:server_error, error_description:Oops! Something went wrong…}
ERROR 418
I’m a teapot
500 Internal Server Error
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

General concepts.
Anyone should be able to use your API without
having to refer to the documentation.

Use standard, concrete and shared terms,
not your specific business terms or acronyms.

Never allow application developers to do
things more than one way.

Design your API for your clients (Application
developers), not for your data.

Target main use cases first, deal with
exceptions later.
GET /orders, GET /users, GET /products, ...
KISS
OAuth2/OIDC  HTTPS
You should use OAuth2 to manage Authorization.
OAuth2 matches 99% of requirements and client
typologies, don’t reinvent the wheel, you’ll fail.
You should use HTTPS for every API/OAuth2
request. You may use OpenID Connect to
handle Authentication.
SECURITY
CURL
You should use CURL to share examples,
which you can copy/paste easily.
GRANULARITY
Medium grained resources
You should use medium grained, not fine nor
coarse. Resources shouldn’t be nested more
than two levels deep:
GET /users/007
{ id”:007,
first_name”:James,
name:Bond,
address:{
street:”Horsen Ferry Road,
”city:{name:London}
}
}
API DOMAIN
NAMES
You may consider the following five
subdomains:
Production: https://api.fakecompany.com
Test: https://api.sandbox.fakecompany.com
 
Developer portal:
https://developers.fakecompany.com
Production: https://oauth2.fakecompany.com
Test: https://oauth2.sandbox.fakecompany.com
www.
CURL –X POST 
-H Accept: application/json 
-H Authorization: Bearer at-80003004-19a8-46a2-908e-33d4057128e7 
-d ‘{state:running}’ 
https://api.fakecompany.com/v1/users/007/orders?client_id=API_KEY_003
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

URLs.
You should use nouns, not verbs (vs SOAP-RPC).
GET /orders not /getAllOrders
NOUNS
You should use plural nouns, not singular nouns,
to manage two different types of resources:
Collection resource: /users
Instance resource: /users/007
You should remain consistent.
GET /users/007 not GET /user/007
PLURALS
user(s)
You may choose between snake_case or
camelCase for attributes and parameters,
but you should remain consistent.
CONSISTENT
CASE
GET /orders?id_user=007
or GET /orders?idUser=007
POST/orders {id_user:007}
or POST/orders {idUser:007}
If you have to use more than one word in URL,
you should use spinal-case (some servers
ignore case).
POST /specific-orders
You should make versioning mandatory in the
URL at the highest scope (major versions).
You may support at most two versions at the
same time (Native apps need a longer cycle).
GET /v1/orders
VERSIONING
You should leverage the hierarchical nature
of the URL to imply structure (aggregation or
composition). Ex: an order contains products.
GET /orders/1234/products/1
HIERARCHICAL
STRUCTURE
/V1/ /V2/
/V3/ /V4/
POST is used to Create an instance of a collection.
The ID isn’t provided, and the new resource
location is returned in the “Location” Header.
POST /orders {state:running, «id_user:007}
201 Created
Location: https://api.fakecompany.com/orders/1234
But remember that, if the ID is specified by the
client, PUT is used to Create the resource.
PUT /orders/1234
201 Created
PUT is used for Updates to perform a full
replacement.
PUT /orders/1234 {state:paid, id_user:007}
200 Ok
PATCH is commonly used for partial Update.
PATCH /orders/1234 {state:paid}
200 Ok
Use HTTP verbs for CRUD operations (Create/Read/Update/Delete).
CRUD-LIKE OPERATIONS
HTTP VERB COLLECTION: /ORDERS INSTANCE : /ORDER/{ID}
GET
POST
PUT
PATCH
DELETE
Read a list of orders. 200 OK.
Create a new order. 201 Created.
-
-
-
Read the details of a single order. 200 OK.
-
Full Update: 200 OK./ Create a specific order:
201 Created.
Partial Update. 200 OK.
Delete order. 204 OK.
GET is used to Read a collection.
GET /orders
200 Ok
[{id:1234, state:paid}
{id:5678, state:running}]
GET is used to Read an instance.
GET /orders/1234
200 Ok
{id:1234, state:paid}
nouns
verbs
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

Query strings.
SEARCH
You should use /search keyword to perform a
search on a specific resource.
GET /restaurants/search?type=thai
You may use the “Google way” to perform a
global search on multiple resources.
GET /search?q=running+paid
SORT
PAGINATION
You may use a range query parameter. Pagination is mandatory: a default pagination has
to be defined, for example: range=0-25.
The response should contain the following headers: Link, Content-Range, Accept-Range.
Note that pagination may cause some unexpected behavior if many resources are added.
PARTIAL
RESPONSES
Youshouldusepartialresponsessodevelopers
can select which information they need, to
optimize bandwidth (crucial for mobile
development).
/orders?range=48-55
206 Partial Content
Content-Range: 48-55/971
Accept-Range: order 10
Link : https://api.fakecompany.com/v1/orders?range=0-7; rel=first,
https://api.fakecompany.com/v1/orders?range=40-47; rel=prev,
https://api.fakecompany.com/v1/orders?range=56-64; rel=next,
https://api.fakecompany.com/v1/orders?range=968-975; rel=last
GET /users/007?fields=firstname,name,address(street)
200 OK
{ id:007,
firstname:James,
name:Bond,
address:{street:Horsen Ferry Road}
}
FILTERS
You ought to use ‘?’ to filter resources
GET /orders?state=payedid_user=007
or(multipleURIsmayrefertothesameresource)
GET /users/007/orders?state=paied
Use ?sort =atribute1,atributeN to sort resources.
By default resources are sorted in ascending order.
Use ?desc=atribute1,atributeN to sort resources
in descending order
GET /restaurants?sort=rating,reviews,name;desc=rate,reviews
URL RESERVED
WORDS :
FIRST, LAST, COUNT
Use /first to get the 1st element
GET /orders/first
200 OK
{id:1234, state:paid}
Use /last to retrieve the latest resource of a
collection
GET /orders/last
200 OK
{id:5678, state:running}
Use /count to get the current size of a collection
GET /orders/count
200 OK
{2}
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

Other key concepts.
Content negotiation is managed only in a pure
RESTful way. The client asks for the required
content, in the Accept header, in order of
preference. Default format is JSON.
Accept: application/json, text/plain not /orders.json
CONTENT
NEGOTIATION
UseISO8601standardforDate/Time/Timestamp:
1978-05-10T06:06:06+00:00 or 1978-05-10
Add support for different Languages.
Accept-Language: fr-CA, fr-FR not ?language=fr
I18N
Use CORS standard to support REST API
requests from browsers (js SPA…).
But if you plan to support Internet Explorer 7/8
or 9, you shall consider specifics endpoints to
add JSONP support.
All requests will be sent with a GET method!

Content negotiation cannot be handled with
Accept header in JSONP.
Payload cannot be used to send data.
CROSS-ORIGIN
REQUESTS
POST /orders and /orders.jsonp?method=POSTcallback=foo
GET /orders and /orders.jsonp?callback=foo
GET /orders/1234 and /orders/1234.jsonp?callback=foo
PUT /orders/1234 and /orders/1234.jsonp?method=PUTcallback=foo
Warning: a web crawler could easily damage your application with a method parameter.
Make sure that an OAuth2 access_token is required, and an OAuth2 client_id as well.
Your API should provide Hypermedia links in order to be completely discoverable. But keep
in mind that a majority of users wont probably use those hyperlinks (for now), and will read
the API documentation and copy/paste call examples.
So, each call to the API should return in the Link header every possible state of the applica-
tion from the current state, plus self.
You may use RFC5988 Link notation to implement HATEOAS :
HATEOAS
GET /users/007
 200 Ok
 { id:007, firstname:Mario,...}
 Link : https://api.fakecompany.com/v1/users; rel=self; method:GET,
https://api.fakecompany.com/v1/addresses/42; rel=addresses; method:GET,
https://api.fakecompany.com/v1/orders/1234; rel=orders; method:GET
In a few use cases we have to consider operations
or services rather than resources.
You may use a POST request with a verb at the
end of the URI.
“NON RESOURCE”
SCENARIOS
POST /emails/42/send
POST /calculator/sum [1,2,3,5,8,13,21]
POST /convert?from=EURto=USDamount=42
However, you should consider using RESTful
resources first before going this way.
RESTFUL WAY
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

For more information,
check out our blog OCTO Talks
READ OUR BLOG POST - EN
LIRE L’ARTICLE DE BLOG - FR
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

We believe that API
IS THE ENGINE OF
DIGITAL STRATEGY
WE KNOW that the Web infiltrates
AND transforms COMPANIES
WE WORK TOGETHER,
with passion, TO CONNECT
BUSINESS  IT
We help you CREATE
OPPORTUNITIES AND EMBRACE
THE WEBInside  Out.
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

OCTO Technology
“ Dans un monde complexe aux ressources finies, nous recherchons ensemble de meilleures
façons d'agir. Nous œuvrons à concevoir et à réaliser les produits numériques essentiels au
progrès de nos clients et à l'émergence d'écosystèmes vertueux”
– Manifeste OCTO Technology -
CABINET DE CONSEIL ET DE RÉALISATION IT
Paris
Toulouse
Hauts-de-France
IMPLANTATIONS
1OOO
OCTOS
OCTO EN TÊTE
DU PALMARÈS
3 CONFÉRENCES
FORMATION
La conférence tech par OCTO
3
6x
octo.com

REST
F
U
L
AP
I
D
ES
I
G
N

© OCTO Technology 2015
Les informations contenues dans ce document présentent le point de vue
actuel d'OCTO Technology sur les sujets évoqués, à la date de publication.
Tout extrait ou diffusion partielle est interdit sans l'autorisation préalable
d'OCTO Technology.
Les noms de produits ou de sociétés cités dans ce document peuvent être
les marques déposées par leurs propriétaires respectifs.
Conçu, réalisé et édité par OCTO Technology.
Ad

More Related Content

What's hot (20)

New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxNew features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
Muralidharan Deenathayalan
 
#SitBERN modern abap development with abapgit
#SitBERN modern abap development with abapgit#SitBERN modern abap development with abapgit
#SitBERN modern abap development with abapgit
Christian Günter
 
Write your own telegraf plugin
Write your own telegraf pluginWrite your own telegraf plugin
Write your own telegraf plugin
InfluxData
 
GDSC Flutter Forward Workshop.pptx
GDSC Flutter Forward Workshop.pptxGDSC Flutter Forward Workshop.pptx
GDSC Flutter Forward Workshop.pptx
GDSCVJTI
 
React storybook
React storybookReact storybook
React storybook
Javier Jair Trejo García
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
Brandon Minnick, MBA
 
Optimizing cloud firestore reads
Optimizing cloud firestore readsOptimizing cloud firestore reads
Optimizing cloud firestore reads
Ryan Sneyd
 
apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...
apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...
apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...
apidays
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic concepts
Kumaresh Chandra Baruri
 
How to Validate Form With Flutter BLoC.pptx
How to Validate Form With Flutter BLoC.pptxHow to Validate Form With Flutter BLoC.pptx
How to Validate Form With Flutter BLoC.pptx
BOSC Tech Labs
 
API Design- Best Practices
API Design-   Best PracticesAPI Design-   Best Practices
API Design- Best Practices
Prakash Bhandari
 
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
정민 안
 
Introduction to Facebook React
Introduction to Facebook ReactIntroduction to Facebook React
Introduction to Facebook React
Mitch Chen
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
Yacine Rezgui
 
Flutter for tche linux
Flutter for tche linuxFlutter for tche linux
Flutter for tche linux
Vilson Dauinheimer
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
Weaveworks
 
RxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMixRxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMix
Tracy Lee
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
IdrissaDembl
 
Rest presentation
Rest  presentationRest  presentation
Rest presentation
srividhyau
 
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxNew features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
Muralidharan Deenathayalan
 
#SitBERN modern abap development with abapgit
#SitBERN modern abap development with abapgit#SitBERN modern abap development with abapgit
#SitBERN modern abap development with abapgit
Christian Günter
 
Write your own telegraf plugin
Write your own telegraf pluginWrite your own telegraf plugin
Write your own telegraf plugin
InfluxData
 
GDSC Flutter Forward Workshop.pptx
GDSC Flutter Forward Workshop.pptxGDSC Flutter Forward Workshop.pptx
GDSC Flutter Forward Workshop.pptx
GDSCVJTI
 
Optimizing cloud firestore reads
Optimizing cloud firestore readsOptimizing cloud firestore reads
Optimizing cloud firestore reads
Ryan Sneyd
 
apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...
apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...
apidays London 2023 - Why and how to apply DDD to APIs, Radhouane Jrad, QBE E...
apidays
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic concepts
Kumaresh Chandra Baruri
 
How to Validate Form With Flutter BLoC.pptx
How to Validate Form With Flutter BLoC.pptxHow to Validate Form With Flutter BLoC.pptx
How to Validate Form With Flutter BLoC.pptx
BOSC Tech Labs
 
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
MVC, MVVM, ReactorKit, VIPER를 거쳐 RIB 정착기
정민 안
 
Introduction to Facebook React
Introduction to Facebook ReactIntroduction to Facebook React
Introduction to Facebook React
Mitch Chen
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
Yacine Rezgui
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
Weaveworks
 
RxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMixRxJS Operators - Real World Use Cases - AngularMix
RxJS Operators - Real World Use Cases - AngularMix
Tracy Lee
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
IdrissaDembl
 
Rest presentation
Rest  presentationRest  presentation
Rest presentation
srividhyau
 

Similar to RefCard RESTful API Design (20)

How to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptxHow to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptx
Channa Ly
 
Cqrs api v2
Cqrs api v2Cqrs api v2
Cqrs api v2
Brandon Mueller
 
Cqrs api
Cqrs apiCqrs api
Cqrs api
Brandon Mueller
 
Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.
Mario Cardinal
 
Design Web Api
Design Web ApiDesign Web Api
Design Web Api
Tailor Fontela
 
Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Automating Cloud Operations - Everything you wanted to know about cURL and RE...Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Revelation Technologies
 
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotionAPIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
javier ramirez
 
Introduction to CloudStack API
Introduction to CloudStack APIIntroduction to CloudStack API
Introduction to CloudStack API
Krunal Jain
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
CA API Management
 
distributing over the web
distributing over the webdistributing over the web
distributing over the web
Nicola Baldi
 
How APIs Can Be Secured in Mobile Environments
How APIs Can Be Secured in Mobile EnvironmentsHow APIs Can Be Secured in Mobile Environments
How APIs Can Be Secured in Mobile Environments
WSO2
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
Gordon Dickens
 
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
Tom Johnson
 
Automating Cloud Operations: Everything You Wanted to Know about cURL and REST
Automating Cloud Operations: Everything You Wanted to Know about cURL and RESTAutomating Cloud Operations: Everything You Wanted to Know about cURL and REST
Automating Cloud Operations: Everything You Wanted to Know about cURL and REST
Revelation Technologies
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in Codeigniter
Sachin G Kulkarni
 
Understanding and testing restful web services
Understanding and testing restful web servicesUnderstanding and testing restful web services
Understanding and testing restful web services
mwinteringham
 
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
REST in ( a mobile ) peace @ WHYMCA 05-21-2011REST in ( a mobile ) peace @ WHYMCA 05-21-2011
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
Alessandro Nadalin
 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
Lorna Mitchell
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
Sumy PHP User Grpoup
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
WebExpo
 
How to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptxHow to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptx
Channa Ly
 
Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.
Mario Cardinal
 
Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Automating Cloud Operations - Everything you wanted to know about cURL and RE...Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Automating Cloud Operations - Everything you wanted to know about cURL and RE...
Revelation Technologies
 
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotionAPIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
javier ramirez
 
Introduction to CloudStack API
Introduction to CloudStack APIIntroduction to CloudStack API
Introduction to CloudStack API
Krunal Jain
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
CA API Management
 
distributing over the web
distributing over the webdistributing over the web
distributing over the web
Nicola Baldi
 
How APIs Can Be Secured in Mobile Environments
How APIs Can Be Secured in Mobile EnvironmentsHow APIs Can Be Secured in Mobile Environments
How APIs Can Be Secured in Mobile Environments
WSO2
 
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
Tom Johnson
 
Automating Cloud Operations: Everything You Wanted to Know about cURL and REST
Automating Cloud Operations: Everything You Wanted to Know about cURL and RESTAutomating Cloud Operations: Everything You Wanted to Know about cURL and REST
Automating Cloud Operations: Everything You Wanted to Know about cURL and REST
Revelation Technologies
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in Codeigniter
Sachin G Kulkarni
 
Understanding and testing restful web services
Understanding and testing restful web servicesUnderstanding and testing restful web services
Understanding and testing restful web services
mwinteringham
 
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
REST in ( a mobile ) peace @ WHYMCA 05-21-2011REST in ( a mobile ) peace @ WHYMCA 05-21-2011
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
Alessandro Nadalin
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
Sumy PHP User Grpoup
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
WebExpo
 
Ad

More from OCTO Technology (20)

La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...
La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...
La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...
OCTO Technology
 
La Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric Duvivier
La Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric DuvivierLa Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric Duvivier
La Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric Duvivier
OCTO Technology
 
La Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El Moussawi
La Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El MoussawiLa Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El Moussawi
La Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El Moussawi
OCTO Technology
 
La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...
La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...
La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...
OCTO Technology
 
Le Comptoir OCTO - Transformer son organisation sans peur et sans douleur
Le Comptoir OCTO - Transformer son organisation sans peur et sans douleurLe Comptoir OCTO - Transformer son organisation sans peur et sans douleur
Le Comptoir OCTO - Transformer son organisation sans peur et sans douleur
OCTO Technology
 
Duck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelle
Duck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelleDuck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelle
Duck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelle
OCTO Technology
 
Duck Conf 2025 - L’architecture continue par la pratique
Duck Conf 2025 - L’architecture continue par la pratiqueDuck Conf 2025 - L’architecture continue par la pratique
Duck Conf 2025 - L’architecture continue par la pratique
OCTO Technology
 
Duck Conf 2025 - Des millisecondes contre des millions d'euros
Duck Conf 2025 - Des millisecondes contre des millions d'eurosDuck Conf 2025 - Des millisecondes contre des millions d'euros
Duck Conf 2025 - Des millisecondes contre des millions d'euros
OCTO Technology
 
Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?
Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?
Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?
OCTO Technology
 
Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...
Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...
Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...
OCTO Technology
 
Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...
Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...
Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...
OCTO Technology
 
Duck Conf 2025 - Tests Pragmatiques : Comment j'ai (presque) arrêté de faire...
Duck Conf 2025 - Tests Pragmatiques :  Comment j'ai (presque) arrêté de faire...Duck Conf 2025 - Tests Pragmatiques :  Comment j'ai (presque) arrêté de faire...
Duck Conf 2025 - Tests Pragmatiques : Comment j'ai (presque) arrêté de faire...
OCTO Technology
 
Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...
Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...
Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...
OCTO Technology
 
La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...
La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...
La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...
OCTO Technology
 
La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...
La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...
La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...
OCTO Technology
 
La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...
La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...
La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...
OCTO Technology
 
La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...
La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...
La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...
OCTO Technology
 
La Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IA
La Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IALa Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IA
La Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IA
OCTO Technology
 
La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...
La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...
La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...
OCTO Technology
 
La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...
La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...
La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...
OCTO Technology
 
La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...
La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...
La Grosse Conf - IA générative et mésinformation comprendre les mécanisme...
OCTO Technology
 
La Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric Duvivier
La Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric DuvivierLa Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric Duvivier
La Grosse Conf - Data et Humanité, un bilan mitigé - Frédéric Duvivier
OCTO Technology
 
La Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El Moussawi
La Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El MoussawiLa Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El Moussawi
La Grosse Conf - LLMOps, on s'y met tout de suite ? - Ali El Moussawi
OCTO Technology
 
La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...
La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...
La Grosse Conf - Déployer des modèles d'IA à l'edge : live coding et bonne...
OCTO Technology
 
Le Comptoir OCTO - Transformer son organisation sans peur et sans douleur
Le Comptoir OCTO - Transformer son organisation sans peur et sans douleurLe Comptoir OCTO - Transformer son organisation sans peur et sans douleur
Le Comptoir OCTO - Transformer son organisation sans peur et sans douleur
OCTO Technology
 
Duck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelle
Duck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelleDuck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelle
Duck Conf 2025 - Déjouer les pièges de Conway dans l'agilité à l'échelle
OCTO Technology
 
Duck Conf 2025 - L’architecture continue par la pratique
Duck Conf 2025 - L’architecture continue par la pratiqueDuck Conf 2025 - L’architecture continue par la pratique
Duck Conf 2025 - L’architecture continue par la pratique
OCTO Technology
 
Duck Conf 2025 - Des millisecondes contre des millions d'euros
Duck Conf 2025 - Des millisecondes contre des millions d'eurosDuck Conf 2025 - Des millisecondes contre des millions d'euros
Duck Conf 2025 - Des millisecondes contre des millions d'euros
OCTO Technology
 
Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?
Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?
Duck Conf 2025 - Du chaos au flow : faut-il miser sur la DevEx ?
OCTO Technology
 
Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...
Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...
Duck Conf 2025 - Les pièges des plateformes : apprenez à les reconnaitre et à...
OCTO Technology
 
Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...
Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...
Duck Conf 2025 - Le micro-frontend décomplexé : les dessous d’une migration i...
OCTO Technology
 
Duck Conf 2025 - Tests Pragmatiques : Comment j'ai (presque) arrêté de faire...
Duck Conf 2025 - Tests Pragmatiques :  Comment j'ai (presque) arrêté de faire...Duck Conf 2025 - Tests Pragmatiques :  Comment j'ai (presque) arrêté de faire...
Duck Conf 2025 - Tests Pragmatiques : Comment j'ai (presque) arrêté de faire...
OCTO Technology
 
Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...
Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...
Duck Conf 2025 - "Modern Software Engineering & Architecture" : Les Tech Tren...
OCTO Technology
 
La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...
La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...
La Grosse Conf 2025 - Baptiste Courbe - Model Platform : industrialiser et go...
OCTO Technology
 
La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...
La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...
La Grosse Conf 2025 - Jean-Baptiste Larraufie - 30% plus rapide : notre recet...
OCTO Technology
 
La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...
La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...
La Grosse Conf 2025 - Yannick Drant - Prototyper l’innovation : framework et ...
OCTO Technology
 
La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...
La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...
La Grosse Conf 2025 - Karim Sayadi - Construire une data plateforme : entre m...
OCTO Technology
 
La Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IA
La Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IALa Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IA
La Grosse Conf 2025 - Laure Constantinesco - Mettez de l’UX dans votre IA
OCTO Technology
 
La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...
La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...
La Grosse Conf - Philippe Prados - LangChain : Open Source, complexité et ada...
OCTO Technology
 
La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...
La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...
La Grosse Conf 2025 - Théophile Molcard - Retour d'expérience de 2 ans de co...
OCTO Technology
 
Ad

Recently uploaded (20)

DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 

RefCard RESTful API Design

  • 2. octo.com  REST F U L AP I D ES I G N  As soon as we start working on an API, design issues arise. A robust and strong design is a key factor for API success. A poorly designed API will indeed lead to misuse or – even worse – no use at all by its intended clients: application developers. Creating and providing a state of the art API requires taking into account: RESTful API principles as described in the literature (Roy Fielding, Leonard Richardson, Martin Fowler, HTTP specification…) The API practices of the Web Giants Nowadays, two opposing approaches are seen. “Purists” insist upon following REST principles without compromise. “Pragmatics” prefer a more practical approach, to provide their clients with a more usable API. The proper solution often lies in between. Designing a REST API raises questions and issues for which there is no universal answer. REST best practices are still being debated and consolidated, which is what makes this job fascinating. To facilitate and accelerate the design and development of your APIs, we share our vision and beliefs with you in this Reference Card. They come from our direct experience on API projects. RESTful API Design.
  • 3. octo.com  REST F U L AP I D ES I G N  Why an API strategy ? “Anytime,Anywhere,Any device” are the key problems of digitalisation. API is the answer to “Business Agility” as it allows to build rapidly new GUI for upcoming devices. An API layer enables Cross device Cross channel 360° customer view Open API allows To outsource innovation To create new business models Embrace WOA “Web Oriented Architecture” Build a fast, scalable secured REST API Based on: REST, HATEOAS, Stateless decoupled µ-services, Asynchronous patterns, OAuth2 and OpenID Connect protocols Leverage the power of your existing web infrastructure DISCLAMER This Reference Card doesn’t claim to be absolutely accurate. The design concepts exposed result from our previous work in the REST area. Please check out our blog http://blog.octo.com, and feel free to comment or challenge this API cookbook. We are really looking forward to sharing with you.
  • 4. octo.com  REST F U L AP I D ES I G N  HTTP STATUS CODE DESCRIPTION SUCCESS 200 OK • Basic success code. Works for the general cases. • Especially used on successful first GET requests or PUT/PATCH updated content. 201 Created • Indicates that a resource was created. Typically responding to PUT and POST requests. 202 Accepted • Indicates that the request has been accepted for processing. • Typically responding to an asynchronous processing call (for a better UX and good performances). 204 No Content • The request succeeded but there is nothing to show. Usually sent after a successful DELETE. 206 Partial Content • The returned resource is incomplete. Typically used with paginated resources. HTTP Status codes. SERVER ERROR 400 Bad Request General error for a request that cannot be processed. CLIENT ERROR GET /bookings?paid=true → 400 Bad Request → {error:invalid_request, error_description:There is no ‘paid’ property} 401 Unauthorized I do not know you, tell me who you are and I will check your permissions. GET /bookings/42 → 401 Unauthorized → {error”:no_credentials, error_description:You must be authenticated} 403 Forbidden Your rights are not sufficient to access this resource. GET /bookings/42 → 403 Forbidden → {error:protected_resource, error_description:You need sufficient rights} 404 Not Found The resource you are requesting does not exist. GET /hotels/999999 → 404 Not Found → {error:not_found, error_description: The hotel ‘999999’ does not exist} 405 Method Not Allowed Either the method is not supported or relevant on this resource or the user does not have the permission. PUT /hotels/999999 → 405 Method Not Allowed → {error:not_implemented, error_description:Hotel creation not implemented} 406 Not Acceptable There is nothing to send that matches the Accept-* headers. For example, you requested a resource in XML but it is only available in JSON. GET /hotels Accept-Language: cn → 406 Not Acceptable → {error: not_acceptable, error_description:Available languages: en, fr} The request seems right, but a problem occurred on the server. The client cannot do anything about that. GET /users → 500 Internal server error → {error:server_error, error_description:Oops! Something went wrong…} ERROR 418 I’m a teapot 500 Internal Server Error
  • 5. octo.com  REST F U L AP I D ES I G N  General concepts. Anyone should be able to use your API without having to refer to the documentation. Use standard, concrete and shared terms, not your specific business terms or acronyms. Never allow application developers to do things more than one way. Design your API for your clients (Application developers), not for your data. Target main use cases first, deal with exceptions later. GET /orders, GET /users, GET /products, ... KISS OAuth2/OIDC HTTPS You should use OAuth2 to manage Authorization. OAuth2 matches 99% of requirements and client typologies, don’t reinvent the wheel, you’ll fail. You should use HTTPS for every API/OAuth2 request. You may use OpenID Connect to handle Authentication. SECURITY CURL You should use CURL to share examples, which you can copy/paste easily. GRANULARITY Medium grained resources You should use medium grained, not fine nor coarse. Resources shouldn’t be nested more than two levels deep: GET /users/007 { id”:007, first_name”:James, name:Bond, address:{ street:”Horsen Ferry Road, ”city:{name:London} } } API DOMAIN NAMES You may consider the following five subdomains: Production: https://api.fakecompany.com Test: https://api.sandbox.fakecompany.com   Developer portal: https://developers.fakecompany.com Production: https://oauth2.fakecompany.com Test: https://oauth2.sandbox.fakecompany.com www. CURL –X POST -H Accept: application/json -H Authorization: Bearer at-80003004-19a8-46a2-908e-33d4057128e7 -d ‘{state:running}’ https://api.fakecompany.com/v1/users/007/orders?client_id=API_KEY_003
  • 6. octo.com  REST F U L AP I D ES I G N  URLs. You should use nouns, not verbs (vs SOAP-RPC). GET /orders not /getAllOrders NOUNS You should use plural nouns, not singular nouns, to manage two different types of resources: Collection resource: /users Instance resource: /users/007 You should remain consistent. GET /users/007 not GET /user/007 PLURALS user(s) You may choose between snake_case or camelCase for attributes and parameters, but you should remain consistent. CONSISTENT CASE GET /orders?id_user=007 or GET /orders?idUser=007 POST/orders {id_user:007} or POST/orders {idUser:007} If you have to use more than one word in URL, you should use spinal-case (some servers ignore case). POST /specific-orders You should make versioning mandatory in the URL at the highest scope (major versions). You may support at most two versions at the same time (Native apps need a longer cycle). GET /v1/orders VERSIONING You should leverage the hierarchical nature of the URL to imply structure (aggregation or composition). Ex: an order contains products. GET /orders/1234/products/1 HIERARCHICAL STRUCTURE /V1/ /V2/ /V3/ /V4/ POST is used to Create an instance of a collection. The ID isn’t provided, and the new resource location is returned in the “Location” Header. POST /orders {state:running, «id_user:007} 201 Created Location: https://api.fakecompany.com/orders/1234 But remember that, if the ID is specified by the client, PUT is used to Create the resource. PUT /orders/1234 201 Created PUT is used for Updates to perform a full replacement. PUT /orders/1234 {state:paid, id_user:007} 200 Ok PATCH is commonly used for partial Update. PATCH /orders/1234 {state:paid} 200 Ok Use HTTP verbs for CRUD operations (Create/Read/Update/Delete). CRUD-LIKE OPERATIONS HTTP VERB COLLECTION: /ORDERS INSTANCE : /ORDER/{ID} GET POST PUT PATCH DELETE Read a list of orders. 200 OK. Create a new order. 201 Created. - - - Read the details of a single order. 200 OK. - Full Update: 200 OK./ Create a specific order: 201 Created. Partial Update. 200 OK. Delete order. 204 OK. GET is used to Read a collection. GET /orders 200 Ok [{id:1234, state:paid} {id:5678, state:running}] GET is used to Read an instance. GET /orders/1234 200 Ok {id:1234, state:paid} nouns verbs
  • 7. octo.com  REST F U L AP I D ES I G N  Query strings. SEARCH You should use /search keyword to perform a search on a specific resource. GET /restaurants/search?type=thai You may use the “Google way” to perform a global search on multiple resources. GET /search?q=running+paid SORT PAGINATION You may use a range query parameter. Pagination is mandatory: a default pagination has to be defined, for example: range=0-25. The response should contain the following headers: Link, Content-Range, Accept-Range. Note that pagination may cause some unexpected behavior if many resources are added. PARTIAL RESPONSES Youshouldusepartialresponsessodevelopers can select which information they need, to optimize bandwidth (crucial for mobile development). /orders?range=48-55 206 Partial Content Content-Range: 48-55/971 Accept-Range: order 10 Link : https://api.fakecompany.com/v1/orders?range=0-7; rel=first, https://api.fakecompany.com/v1/orders?range=40-47; rel=prev, https://api.fakecompany.com/v1/orders?range=56-64; rel=next, https://api.fakecompany.com/v1/orders?range=968-975; rel=last GET /users/007?fields=firstname,name,address(street) 200 OK { id:007, firstname:James, name:Bond, address:{street:Horsen Ferry Road} } FILTERS You ought to use ‘?’ to filter resources GET /orders?state=payedid_user=007 or(multipleURIsmayrefertothesameresource) GET /users/007/orders?state=paied Use ?sort =atribute1,atributeN to sort resources. By default resources are sorted in ascending order. Use ?desc=atribute1,atributeN to sort resources in descending order GET /restaurants?sort=rating,reviews,name;desc=rate,reviews URL RESERVED WORDS : FIRST, LAST, COUNT Use /first to get the 1st element GET /orders/first 200 OK {id:1234, state:paid} Use /last to retrieve the latest resource of a collection GET /orders/last 200 OK {id:5678, state:running} Use /count to get the current size of a collection GET /orders/count 200 OK {2}
  • 8. octo.com  REST F U L AP I D ES I G N  Other key concepts. Content negotiation is managed only in a pure RESTful way. The client asks for the required content, in the Accept header, in order of preference. Default format is JSON. Accept: application/json, text/plain not /orders.json CONTENT NEGOTIATION UseISO8601standardforDate/Time/Timestamp: 1978-05-10T06:06:06+00:00 or 1978-05-10 Add support for different Languages. Accept-Language: fr-CA, fr-FR not ?language=fr I18N Use CORS standard to support REST API requests from browsers (js SPA…). But if you plan to support Internet Explorer 7/8 or 9, you shall consider specifics endpoints to add JSONP support. All requests will be sent with a GET method! Content negotiation cannot be handled with Accept header in JSONP. Payload cannot be used to send data. CROSS-ORIGIN REQUESTS POST /orders and /orders.jsonp?method=POSTcallback=foo GET /orders and /orders.jsonp?callback=foo GET /orders/1234 and /orders/1234.jsonp?callback=foo PUT /orders/1234 and /orders/1234.jsonp?method=PUTcallback=foo Warning: a web crawler could easily damage your application with a method parameter. Make sure that an OAuth2 access_token is required, and an OAuth2 client_id as well. Your API should provide Hypermedia links in order to be completely discoverable. But keep in mind that a majority of users wont probably use those hyperlinks (for now), and will read the API documentation and copy/paste call examples. So, each call to the API should return in the Link header every possible state of the applica- tion from the current state, plus self. You may use RFC5988 Link notation to implement HATEOAS : HATEOAS GET /users/007 200 Ok { id:007, firstname:Mario,...} Link : https://api.fakecompany.com/v1/users; rel=self; method:GET, https://api.fakecompany.com/v1/addresses/42; rel=addresses; method:GET, https://api.fakecompany.com/v1/orders/1234; rel=orders; method:GET In a few use cases we have to consider operations or services rather than resources. You may use a POST request with a verb at the end of the URI. “NON RESOURCE” SCENARIOS POST /emails/42/send POST /calculator/sum [1,2,3,5,8,13,21] POST /convert?from=EURto=USDamount=42 However, you should consider using RESTful resources first before going this way. RESTFUL WAY
  • 9. octo.com  REST F U L AP I D ES I G N  For more information, check out our blog OCTO Talks READ OUR BLOG POST - EN LIRE L’ARTICLE DE BLOG - FR
  • 10. octo.com  REST F U L AP I D ES I G N  We believe that API IS THE ENGINE OF DIGITAL STRATEGY WE KNOW that the Web infiltrates AND transforms COMPANIES WE WORK TOGETHER, with passion, TO CONNECT BUSINESS IT We help you CREATE OPPORTUNITIES AND EMBRACE THE WEBInside Out.
  • 11. octo.com  REST F U L AP I D ES I G N  OCTO Technology “ Dans un monde complexe aux ressources finies, nous recherchons ensemble de meilleures façons d'agir. Nous œuvrons à concevoir et à réaliser les produits numériques essentiels au progrès de nos clients et à l'émergence d'écosystèmes vertueux” – Manifeste OCTO Technology - CABINET DE CONSEIL ET DE RÉALISATION IT Paris Toulouse Hauts-de-France IMPLANTATIONS 1OOO OCTOS OCTO EN TÊTE DU PALMARÈS 3 CONFÉRENCES FORMATION La conférence tech par OCTO 3 6x
  • 12. octo.com  REST F U L AP I D ES I G N  © OCTO Technology 2015 Les informations contenues dans ce document présentent le point de vue actuel d'OCTO Technology sur les sujets évoqués, à la date de publication. Tout extrait ou diffusion partielle est interdit sans l'autorisation préalable d'OCTO Technology. Les noms de produits ou de sociétés cités dans ce document peuvent être les marques déposées par leurs propriétaires respectifs. Conçu, réalisé et édité par OCTO Technology.