Zápasíme s REST API. Lukáš Křečan REST API Architect GoodData

Podobné dokumenty
RESTful API TAMZ 1. Cvičení 11

Webové služby. Martin Sochor

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Úvod do Web Services

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

Web Services na SOAP

Projekt JetConf REST API pro vzdálenou správu

Příručka pro potvrzování zůstatku vydavatelům karetních platebních prostředků

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

Artlingua Translation API

ASP.NET Web API. Tomáš Herceg Microsoft MVP (ASP.NET)

Programátorské večery. Tomáš Herceg Microsoft Student Partner

JSON API pro zjišťování cen MtG karet

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

WWW technologie. HTTP protokol

SOAP & REST služby. Rozdíly, architektury, použití

Analyzujte konkurenční API u služeb podobného typu. Proveďte analýzu požadavků zadavatele a současného stavu správy zásilek.

API pro volání služby kurzovního lístku KB

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

WCF. IW5 - Programování v.net a C# WCF

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

HTTP protokol. Zpracoval : Petr Novotný

Pokročilé funkce a časté chyby. Petr Ferschmann FlexiBee Systems s.r.o.

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

2N Helios IP HTTP API

WINDOWS 8 APLIKACE PRO PREZENTACI DAT Z WEBOVÉHO API

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

TRANSPORTY výbušnin (TranV)

Prototyping konfigurace linuxových serverů. horizontální škálování Deltacloud API

Protokol HTTP. Ondřej Dolejš

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Michal Krátký, Miroslav Beneš

Server-side technologie pro webové aplikace

Pokročilé funkce FlexiBee REST API. Ladislav Thon

FlexiBee Časté chyby. Ondřej Světlík FlexiBee Systems s.r.o.

1 z :17

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Příloha č. 2 - Integrace SpiritÚAP do ESB Jihočeského kraje

UJO Framework. revoluční architektura beans. verze

UAI/612 - Cloudová Řešení. Návrh aplikací pro cloud

API pro službu mobilem.cz, verze XML 5.04

Tvorba webových stránek. Ing. Radek Burget, Ph.D.

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

Technická dokumentace B2C WS postcode

Nové jazykové brány do Caché. Daniel Kutáč

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Position Services. Search

SUTOL Symposium 2014

ZP API V1.0 Návod pro vývojáře SW

Rodina protokolů TCP/IP, verze 2.3. Část 10: World Wide Web

Tvorba informačních systémů

BI-AWD. Administrace Webového a Databázového serveru Úvod do problematiky HTTP serveru

wplatba SOAP api Technická dokumentáce

Instalace a konfigurace web serveru. WA1 Martin Klíma

AJAX. Dynamické změny obsahu stránek

Požadavky pro výběrová řízení TerraBus ESB/G2x

Softwarové komponenty a Internet

Pokročilé Webové služby a Caché security. Š. Havlíček

Komponentový návrh SW

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Rozhraní pro docházkové systémy verze 2

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Vývoj Internetových Aplikací

Setkání FlexiBee vývojářů. Jak jsme psali eshop

Vývojařská Plzeň AngularJS

OprDU software pro opravu domácích úkolů

mbank.cz mtransfer Okamžitá notifikace o mtransferu Dokumentace pro externího partnera

ISZR Referenční agent.net

Návrh a implementace RESTových rozhraní

B2B SOAP - popis funkcionality

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

2N Helios IP HTTP API

Tvorba informačních systémů

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

CREDITAS API A OTEVŘENÉ BANKOVNICTVÍ - MANUÁL

Nové vývojové nástroje i5/os Rational Developer for System i V7.1

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Verze dokumentu 0.1 duben 2016

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Stručný úvod pro programátory. Michal Kuchta

Sem vložte zadání Vaší práce.

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Datum Poznámka Autor Základní dokument verze 1.0 Petr Michalík (ČS)

Platební systém XPAY [

Sem vložte zadání Vaší práce.

Změnový list. Datum Poznámka Autor. Český standard pro Open Banking

Služba World Wide Web

Obsah Princip API...2 Funkce activate-user...3 Funkce deactivate-user...4 Funkce vlc-playlist...5 Funkce identify-user...6

Transkript:

Zápasíme s REST API Lukáš Křečan REST API Architect GoodData

Něco o mě GoodData REST API architekt Před tím několik let v korporacích SOAP-WS Spring WS Test Java programátor blog.krecan.net

Agenda Co je to REST? Kde mu začínají docházet síly? Jak to řešit?

Otázky?

REST v GoodData Tlustý JS klient Interní API

REST JE DOBRÝ ale ne jednoduchý

REST je filozofie ne standard

Make Web not RPC!

http://www.slideshare.net/jakub.nesetril/apiary-introapistratoffline

Richardson Maturity Model http://martinfowler.com/articles/richardsonmaturitymodel.html

Resource URI Resource je objekt Každý resource má URI Je to jeho ID (reference) Podstatná jména, množné číslo /pets /pets/123 /owners /owners/456

Výhody URI Routing Logování Autorizace Cache

Monitoring

Cvičení Jakou URI by měl mít seznam mazlíčků daného majitele?

Udružujte mělkou hierarchii /owners/789/pets /owners/789/pets/123 /pets?owner=789 /pets?vet=555&owner=789

Slovesa jen když to nejde jinak /convert?from=czk &to=usd&amount=100

Metody alias slovesa POST (C) GET (R) PUT (U) DELETE (D) /pets Vytvoř nový Vrať seznam X* Vymaž seznam* /pets/123 X Vrať jeden Aktualizuj / vytvoř* Smaž

Výhody Jasná sémantika GET - bezpečný PUT, DELETE - idempotentní POST - nebezpečný Vím co mě čeká Proxy a cache s tím umí pracovat

Nevýhody Ne všechno je CRUD GET parametry jenom v URL omezení na délku (??) GET s tělem (fůůůj) POST tunneling Hromadné operace Nastav slevu u všech majitelů z daného města Vrať mi detail uživatelů s těmito ID

Svatý grál - Univerzální Knihovna POST GET PUT DELETE /{thing}s Vytvoř nový Vrať seznam X Vymaž seznam /{thing}s/123 X Vrať jeden Aktualizuj / vytvoř Smaž Framework na serveru Knihovna na klienta

Detaily nejsou standardizované

Judská Lidová Fronta http://www.youtube.com/watch?v=gb_qhp7vaze

Detaily jako Formát kolekcí Stránkování Formát odkazů URI šablony HATEOAS

Frakce JSON API http://jsonapi.org/format/ Collection+JSON http://amundsen. com/media-types/collection/examples/ Siren https://github.com/kevinswiber/siren HAL http://stateless.co/hal_specification.html AtomPub http://atompub.org/...

Reprezentace Stejná pro PUT, POST, GET, list GET /pets/123 { "pet": { "name":"pluto", "owner":"/owners/543", "self":"/pets/123" } }

Seznam GET /pets { "pets":{ "items":[ {"pet":{"name":"pluto", "owner":"/owners/543", "self":"/pets/1" }}, {"pet":{"name":"mickey", "owner":"/owners/546", "self":"/pets/2" }},... ], "paging":{ "offset":0, "count":50, "next":"/pets?offset=50&limit=50" } } }

Cvičení Jak zobrazit všechny mazlíčky a k nim jméno a příjmení majitele?

Možnosti Čisté řešení (nezávislé resources) Snadný update Oddělené služby N+1 problém Sideloading Informace o majiteli v entitě pet Ošklivé Co všechno zahrnout? Co se změnami? Cache? /pets?fields=name,owner

Sideloading {"pets": [ "pet": { "name":"pluto", "owner":"/owners/543", "self":"/pets/1" },... ], "owners":[ {"owner":{"name":"john Doe", "pets":"/pets?owner=543"},"self":"/owners/543"},... ]}

Reprezentace - jaký formát? XML, JSON, HTML, YAML Content negotiation Accept Content-Type http://dev.anyframejava.org/docs.en/anyframe/plugin/springrest/1.0.2/reference/htmlsingle/springrest.html

HTML

Možnosti application/xml application/json application/vnd.petclinic.pets+json application/vnd.collection+json application/vnd.siren+json...

Odkazy Naivní "owner":"/owners/543" HAL "owner":{"href" :"/owners/543"} Collection+JS "links" : [ {"rel" : "owner", "href" : "/owners/543"} ] Siren "links": [{ "class": [ "item"], "rel": [ "http://x.io/rels/owner" ], "href": "http://api.x.io/owners/543" }]

HTTP status kódy 200 - OK 201 - Created 202 - Accepted 204 - No Content

Chybný požadavek 400 Bad Request 403 Forbidden 404 Not Found 405 Method not allowed 418 I am a teapot (RFC 2324)

Chyba serveru 500 Internal Server Error 503 Service Unavailable

Redirect 301/302/303/307 - Redirect - který je ten správný? Všechno kromě HEAD a GET musí být potvrzeno uživatelem http://www.w3.org/protocols/rfc2616/rfc2616-sec10.html

Chybí Redirect na POST, PUT, DELETE Chyby co nejsou způsobeny ani requestem ani serverem Chyba třetí strany Chybný stav

HTTP status Nestačí, musíte dodat další informace kód chyby, zpráva, parametry HTTP nebylo navrženo pro aplikace Není nutné nad tím moc dumat Klienti to stejně většinou ignorují

Cvičení - asynchronní volání REST API na spouštění a čtení výsledků operací, které mohou trvat několik desítek minut.

Dokumentace WSDL x pravý RESTafarián dokumentaci nepotřebuje Samonavigující se klient

Možnosti Apiary.io Swagger Samodomo

JSON schéma Schéma je pro bačkory x schéma se hodí JSON schema Orderly JSON RelaxNG :-( Samodomo

Zpětná kompatibilita Přidání resource Přidální volitelného parametru Přidání volitelného prvku do requestu Přidání prvku do odpovědi?

Verzování Verze v URI /v1/pets/123 URI parametr Content negotiation Accept: application/json;v=2 Content-Type: application/json;v=2 Hlavička Neverzovat http://www.lexicalscope.com/blog/2012/03/12/how-are-rest-apis-versioned/

Shrnutí REST je užitečný HTTP protokol je zároveň dar a prokletí Nikdo vám neřekne jak to správně udělat musíte si najít vlastní variantu Umění, ne rutina rovnováha mezi čistotou, použitelností, rychlostí, jednoduchostí, rozšiřitelností,...

Zdroje http://blog.apigee.com/detail/announcement_new_ebook_on_web_api_design