SlideShare a Scribd company logo
1 of 19
Download to read offline
Projektowanie
nowoczesnego API
jak zrobić to dobrze…
Agenda
Podstawowe decyzje architektoniczne
Trochę więcej o architekturze
Wersjonowanie
Bezpieczeństwo
Żądania i odpowiedzi
Resource’y i ich reprezentacje
Komunikaty o błędach
Podsumowanie
REST
Architektura
Media Type
JSON
Protokół
HTTPS
Nie jestem
RESTafarianinem ;)
REST PRINCIPLES
Stateless
Cacheable
Client/Server
Uniform Interface
Resource-based
Resource manipulation through representation
Self-descriptive messages
HATEOAS
Layered System
Code on demand*
Wersjonowanie
URL

https://api.example.com/v1

Accept Header

Accept: application/vnd.example.v1+json

Custom Header

api-version:1
Security
oAuth1.0a - bezpieczeństwo
oAuth2.0 - wygoda
HttpBasic - prostota
Własne - ?
Nagłówki i Statusy
Accept: application/json; charset=utf-8

Accept-encoding: gzip

If-none-match: jkshfsidniuds87h

Content-type: application/json; charset=utf-8

Content-encoding: gzip
HTTP Verbs:

post,put, get,delete
HTTP Status:

2xx, 3xx,4xx,5xx
Nagłówki i Statusy
200 OK
201 Created
202 Accepted
204 No Content
304 Not Modified
400 Bad Request
401 Unauthorized (Unauthenticated)
403 Forbidden
404 Not Found
405 Method not Allowed
409 Conflict
429 Too Many Request
URL
/products
/products/1hd84hb
/cars/alfaromeo/166
/users/jf74jd/messages?type=closed&page=4&perPage=10
/users/jdf8734hd/friends?order=createdAt,desc&fields=email,name
Reprezentacja
{

“href”: “http://api.example.com/v1/users/f7js9hj4”,

“id”: “f7js9hj4”,

“name”: “Jan Kowalski”,

“email”: “jan@kowalski.pl”,

“friends”: {

“href”: “http://api.example.com/v1/users/f7js9hj4/fiends”

},

“createdAt”: “2014-01-28T14:38:30Z”

}
Reprezentacja
{
“href”: “http://api.example.com/v1/users?q[email]=@wp.pl&page=4&perPage=10&order=createdAt,desc”,
“next”: “http://api.example.com/v1/users?q[email]=@wp.pl&page=5&perPage=10&order=createdAt,desc”,
“prev”: “http://api.example.com/v1/users?q[email]=@wp.pl&page=4&perPage=10&order=createdAt,desc”,
“filters”:{
“email”: “@wp.pl”,
“page”: 4,
“perPage”: 10
“order”: createdAt,desc
},
“items”: [{
“id”: “f7js9hj4”,
“name”: “Jan Kowalski”,
“email”: “jan.kowalski@wp.pl”,
“friends”: {
“href”: “http://api.example.com/v1/users/f7js9hj4/fiends”
},
“createdAt”: “2014-01-28T14:38:30Z”
},
]
}
Błędy
{
“error”:”1”,
“message”:”An error occurs”
}
"2000": {
"httpCode": 400,
"internalCode": 2000,
"developerMessage": "Your request has incorrect format.",
"codeDescription": "Cannot understand this request, please check if all mandatory field are filled",
"moreInfo": "http://dev.example.com/erros/2000",
"context": ["Field email must have valid email address!", "You must specify campaignId"]
},
Podsumowanie
Pamiętaj że klientami twojego API są programiści,
Nie zaniedbuj czytelności API zwłaszcza w wypadku
błędów,
Wykorzystuj standardy,
Zachowuj kompatybilność wsteczną i zaplanuj długie
cykle życia wersji,
Planuj strukturę reprezentacji zasobów (enveloping),
Rozmawiaj ze swoimi klientami!
Dziękuję za uwagę
michal.giergielewicz@getresponse.com

More Related Content

Similar to Design Modern API - The Right Way

Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...Tomasz Kopacz
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPXSolve
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture Processing
 
Nowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji WebowychNowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji WebowychMarcin Daczkowski
 
Wstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - restWstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - restLukas Lesniewski
 
Michał Żyliński: Cortana dla niewtajemniczonych
Michał Żyliński: Cortana dla niewtajemniczonychMichał Żyliński: Cortana dla niewtajemniczonych
Michał Żyliński: Cortana dla niewtajemniczonychAnalyticsConf
 
4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...
4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...
4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...PROIDEA
 
Dlaczego 99% firm, które tworzą API RESTowe kłamie?
Dlaczego 99% firm, które tworzą API RESTowe kłamie?Dlaczego 99% firm, które tworzą API RESTowe kłamie?
Dlaczego 99% firm, które tworzą API RESTowe kłamie?Bartek Andrzejczak
 
Single Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu RESTSingle Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu REST3camp
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsWebhosting.pl
 
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuDrobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuLogicaltrust pl
 
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuDrobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuLogicaltrust pl
 
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PROIDEA
 

Similar to Design Modern API - The Right Way (20)

Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
 
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of busin...
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTP
 
Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 
Nowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji WebowychNowe Trendy W Projektowaniu Aplikacji Webowych
Nowe Trendy W Projektowaniu Aplikacji Webowych
 
Wstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - restWstęp do projektowania usług internetowych: część 1 - rest
Wstęp do projektowania usług internetowych: część 1 - rest
 
Michał Żyliński: Cortana dla niewtajemniczonych
Michał Żyliński: Cortana dla niewtajemniczonychMichał Żyliński: Cortana dla niewtajemniczonych
Michał Żyliński: Cortana dla niewtajemniczonych
 
4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...
4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...
4Developers 2015: Dlaczego 99% firm, które tworzą API RESTowe kłamie? - Barte...
 
Dlaczego 99% firm, które tworzą API RESTowe kłamie?
Dlaczego 99% firm, które tworzą API RESTowe kłamie?Dlaczego 99% firm, które tworzą API RESTowe kłamie?
Dlaczego 99% firm, które tworzą API RESTowe kłamie?
 
Single Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu RESTSingle Page Applications przy wykorzystaniu REST
Single Page Applications przy wykorzystaniu REST
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na Windows
 
Api design - slajdy
Api design - slajdyApi design - slajdy
Api design - slajdy
 
Android i REST
Android i RESTAndroid i REST
Android i REST
 
Serwery WWW - wykład
Serwery WWW - wykładSerwery WWW - wykład
Serwery WWW - wykład
 
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuDrobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
 
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadkuDrobne błędy w portalach WWW -- prawdziwe studium przypadku
Drobne błędy w portalach WWW -- prawdziwe studium przypadku
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
HTML5: Atak i obrona
HTML5: Atak i obronaHTML5: Atak i obrona
HTML5: Atak i obrona
 
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
PLNOG 18 - Sebastian Pasternacki - Bezpieczeństwo sieci operatorskich oraz en...
 

Design Modern API - The Right Way