March 2017
RESTFUL WEB API
March 2017
FARAMARZSALEHPOURBack-End Developer at ParsFiberNet
@fsalehpour
March 2017
WHAT IS WEB API?
Architecture: Client/ServerProtocol: HTTP
March 2017
WHY SHALL WE USE WEB APIS?
• Network based systems & services• Web Applications (SPA)• Mobile Apps• Integration• B2B
March 2017
USE CASE EXAMPLE
3rd PartyService
Web API
Web App
Android
iOS
March 2017
RESTRepresentational State Transfer
March 2017
REST - PROPERTIES
• Client/Server architecture• Stateless• Cacheable• Uniform Interface
March 2017
REST - RESOURCES
A resource is an object with a type, associated data, relationships to other resources, and a set
of methods that operate on it
March 2017
REST - RESOURCES
March 2017
REST - PRESENTATION
March 2017
REST - TRANSFER
HTTP: HyperText Transfer Protocol
Messages: Request/Response
March 2017
REST - TRANSFERHTTP | Request
Head
Body
Method
March 2017
REST - TRANSFERHTTP | Response
Head
Body
Status
March 2017
REST - SECURITY
March 2017
REST - IMPLEMENTATIONUNIFORM INTERFACE - URL SCHEME
Resource name car
Resource URI /cars
Resource URL https://www.example.com/cars
March 2017
REST - IMPLEMENTATIONUNIFORM INTERFACE - HTTP VERBS
Create POST
Read GET
Update PUT
Delete DELETE
March 2017
REST - IMPLEMENTATIONSECURITY
• Token based authentication• Header
Authorization: Bearer taw0ws5Kjvelc9z0RCfyfNrVWEqyFBNv3vN53HWk
March 2017
REST - IMPLEMENTATIONRESPONSE - SUCCESS
200 OK
201 CREATED
202 ACCEPTED
204 NO CONTENT
206 PARTIAL CONTENT
March 2017
REST - IMPLEMENTATIONRESPONSE - CLIENT SIDE ERROR
400 BAD REQUEST
401 UNAUTHORIZED
403 FORBIDDEN
404 NOT FOUND
405 METHOD NOT ALLOWED
406 NOT ACCEPTABLE
March 2017
REST - IMPLEMENTATIONRESPONSE - SERVER SIDE ERROR
500 INTERNAL SERVER ERROR
503 SERVICE UNAVAILABLE
March 2017
REST - IMPLEMENTATIONCREATE A NEW RESOURCE
Method POST
URL https://api.example.com/cars
Body {“brand”:”IKCO”, “model”:”Pars”}
Response 201 CREATED{“id”: 1, “brand”: “IKCO”, “model”: “Pars”}
March 2017
REST - IMPLEMENTATIONGET ALL RESOURCES
Method GET
URL https://api.example.com/cars
Response200 OK[{“id”: 1, “brand”: “IKCO”, “model”: “Pars”}, {“id”: 2, “brand”: “Saipa”, “model”: “Pride”}]
March 2017
REST - IMPLEMENTATIONGET A SPECIFIC RESOURCE
Method GET
URL https://api.example.com/cars/2
Response200 OK{“id”: 2, “brand”: “Saipa”, “model”: “Pride”}
March 2017
REST - IMPLEMENTATIONUPDATE A SPECIFIC RESOURCE
Method PUT
URL https://api.example.com/cars/2
Body {“brand”:”Saipa”, “model”:”141”}
Response 200 OK{“id”: 2, “brand”:”Saipa”, “model”:”141”}
March 2017
REST - IMPLEMENTATIONUNIFORM INTERFACE - DELETE A SPECIFIC
RESOURCE
Method DELETE
URL https://api.example.com/cars/2
Response 200 OK
March 2017
Q & A
March 2017
THANK YOU