SlideShare a Scribd company logo
1 of 34
Download to read offline
Lionframe
Rapid RESTful API development
powered by
Michał Marcinkowski
Współzałożyciel LAKION
Miłośnik Symfony2 i Open Source
?Co to jest API
Application
Programming
Interface
User Interface
User Interface
Software-to-software
Interface
Amazon Client
My website Client
API
UI
UI
wykorzystanie API
• Współdzielenie treści i danych pomiędzy
aplikacjami/systemami
• Budowanie aplikacji korzystających z serwisu
?Czy każda aplikacja
zależy od jakiegoś API
?Czy każda aplikacja
zależy od jakiegoś API
TAK!
REST
CECHY REST
• Bezstanowość
• Cache
• Jednolitość interfejsów
• Oparte na standardach (HTTP, URL, XML, JSON)
• Niezależność od platformy i języka
• Może być stosowane w obecności firewalli
• Prostota
Prostota REST
POST / HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 300
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/">
<m:GetUserDetails>
<m:UserID>12345</UserID>
</m:GetUserDetails>
</soap:Body>
</soap:Envelope>
GET /users/12345 HTTP/1.1
Host: www.example.org
Accept: application/json
Dojrzałość REST
Richardson Maturity Model
Level 0
THE SWAMP OF POX
• Protokół jako tunel dla 

request-response (zazwyczaj HTTP)
• Jeden entry point URI
• Jeden rodzaj metody (w HTTP,
zazwyczaj metoda POST)
Backend
system
Mobile
application
appointmentService
POST <openSlotRequest
POST <appointmentRequest
Level 0
THE SWAMP OF POX
Level 1
RESOURCES
• Wiele URIs
• Każdy URI inny resource
• Jeden rodzaj metody (POST)
Backend
system
Mobile
application
doctors/jdoe
POST <openSlotRequest
POST <appointmentRequest
slots/1234
Level 1
RESOURCES
Level 2
HTTP VERBS
• Używanie poprawnych metod
• Używanie poprawnych kodów odpowiedzi
Level 2
HTTP VERBS
• GET
• POST
• PUT
• PATCH
• DELETE
HTTP CODES
• 2xx Success
• 200 OK
• 201 Created
• 204 No Content
• 3xx Redirection
• 301 Moved Permanently
• 5xx Server Error
• 500 Internal Server Error
• 503 Service Unavailable
• 4xx Client Error
• 400 Bad Request
• 401 Unauthorized
• 403 Forbidden
• 404 Not Found
• 405 Method Not Allowed
• 409 Conflict
Level 3
Hypermedia controls
• Używanie HATEOAS do odkrywania
możliwości API
DEMO
Time
/**
* @AssertNotBlank()
*/
private $firstName;
VALIDATIOn
SERIALIZACJA
#src/Acme/DemoBundle/Resources/config/serializer/Entity.Player.yml
AcmeDemoBundleEntityPlayer:
exclusion_policy: ALL
xml_root_name: player
properties:
id:
expose: true
type: integer
xml_attribute: true
firstName:
expose: true
type: string
lastName:
expose: true
type: string
HATEOAS
#src/Acme/DemoBundle/Resources/config/serializer/Entity.Player.yml
AcmeDemoBundleEntityPlayer:
exclusion_policy: ALL
xml_root_name: player
properties:
id:
expose: true
type: integer
xml_attribute: true

 firstName:

 
 ….
relations:
- rel: self
href:
route: acme_api_player_show
parameters:
id: expr(object.getId())
Z czego składa się LIONframe
Sylius Resource Bundle
• Domyślny kontroler
• Domyślny routing
• Domyślne repository z paginacją
• Aliasy do serwisów dla managerów, repository,
kontrolerów
• Podstawowe filtrowanie i sortowanie
• Wywołuje zdarzenia (events)
FOS REST BUNDLE
• Wykrywa format po nagłówach HTTP
• Wybiera i zwraca response w porządanym
formacie
• Integruje kontroler z serializerem
JMS Serializer BUNDLE
• Serializuje dane do opowiedniego formatu
• Łatwo konfigurowalny serializer
BaZinga hateoas Bundle
• Dodaje linki relacji
• Obsługuje XML i JSON
• Łatwo konfigurowalne relacje
@micmarcinkowski
@Lakion
lakion.com/lionframe
„Time is money” 
Benjamin Franklin
Image Credits
http://martinfowler.com/articles/
richardsonMaturityModel.html
https://www.flickr.com/photos/kwl/4247555680

More Related Content

Viewers also liked

TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006
TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006
TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006AC&C Consulting Co., Ltd.
 
системы счисления
системы счислениясистемы счисления
системы счисленияnatalyavalueva
 
A Student Guide to University
A Student Guide to UniversityA Student Guide to University
A Student Guide to UniversityKathryn Harrop
 
Sumber Daya Laut by Sandy,rizal,ival and widhi
Sumber Daya Laut by Sandy,rizal,ival and widhiSumber Daya Laut by Sandy,rizal,ival and widhi
Sumber Daya Laut by Sandy,rizal,ival and widhiAal Sullivan
 
La piràmide de l'escarbat d'or
La piràmide de l'escarbat d'orLa piràmide de l'escarbat d'or
La piràmide de l'escarbat d'or6aigua
 
Media a2 music video analysis
Media a2 music video analysis Media a2 music video analysis
Media a2 music video analysis 11jlove
 
[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing
[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing
[#MFGAdvances] Lean Management for WBEs in Construction and ManufacturingJanet Johnson, MBA, LION
 
Presentation - DALOYOC
Presentation - DALOYOCPresentation - DALOYOC
Presentation - DALOYOCNinyaFishy
 

Viewers also liked (9)

TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006
TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006
TT 200-BTC-2014 che do ke toan moi va nhung thay doi voi QD 15-2006
 
системы счисления
системы счислениясистемы счисления
системы счисления
 
A Student Guide to University
A Student Guide to UniversityA Student Guide to University
A Student Guide to University
 
Sumber Daya Laut by Sandy,rizal,ival and widhi
Sumber Daya Laut by Sandy,rizal,ival and widhiSumber Daya Laut by Sandy,rizal,ival and widhi
Sumber Daya Laut by Sandy,rizal,ival and widhi
 
2015 talking point analyze for growth
2015 talking point analyze for growth2015 talking point analyze for growth
2015 talking point analyze for growth
 
La piràmide de l'escarbat d'or
La piràmide de l'escarbat d'orLa piràmide de l'escarbat d'or
La piràmide de l'escarbat d'or
 
Media a2 music video analysis
Media a2 music video analysis Media a2 music video analysis
Media a2 music video analysis
 
[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing
[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing
[#MFGAdvances] Lean Management for WBEs in Construction and Manufacturing
 
Presentation - DALOYOC
Presentation - DALOYOCPresentation - DALOYOC
Presentation - DALOYOC
 

Similar to Lionframe - Rapid RESTful API development

JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API3camp
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowaniaSecuRing
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech DworakowskiPROIDEA
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Natalia Stanko
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Logicaltrust pl
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASMateusz Stępniak
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
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
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developeraTomasz Borowski
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8DreamLab
 
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowejTworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowejTomasz Borowski
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówArkadiusz Stęplowski
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4Tomasz Dziuda
 
Dobre przepisy na cake php
Dobre przepisy na cake phpDobre przepisy na cake php
Dobre przepisy na cake phpDaniel Mendalka
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Mateusz Stępniak
 
WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)lpilorz
 

Similar to Lionframe - Rapid RESTful API development (20)

JSON, REST API
JSON, REST APIJSON, REST API
JSON, REST API
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
Bezpieczenstwo Portali Spolecznosciowych W Ujeciu Robakow Web 20 Pingwinaria2009
 
Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16
Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16
Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16
 
Budowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOASBudowa RESTowego api w oparciu o HATEOAS
Budowa RESTowego api w oparciu o HATEOAS
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
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?
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
 
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowejTworzenie niezależnego środowiska do developmentu aplikacji frontendowej
Tworzenie niezależnego środowiska do developmentu aplikacji frontendowej
 
Android i REST
Android i RESTAndroid i REST
Android i REST
 
Błędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderówBłędy userów, niedoróbki koderów
Błędy userów, niedoróbki koderów
 
WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4WP-API - teoria i praktyka - WordUp Łódź #4
WP-API - teoria i praktyka - WordUp Łódź #4
 
Dobre przepisy na cake php
Dobre przepisy na cake phpDobre przepisy na cake php
Dobre przepisy na cake php
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
Budowa poprawnego i intuicyjnego api REST HATEOAS devfest@2013
 
WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)
 

Lionframe - Rapid RESTful API development