SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
RESTful API design
Open Space
April 2014
Jørn Wildt og Jakob Bendsen
cBrain
●
”The Process Company”
●
48 ansatte
– 28 udviklere, alle fra Danmark
– Master eller Ph.D (DTU, DIKU og ITU)
●
C# + MS-SQL + IIS
●
50% specialprojekter
●
50% standardprodukt (F2)
REST: Et løfte om
Løst koblede
Uafhængige
Skalerbare
Tilgængelige
Distribuerede systemer
F2-REST seminar april 2014
F2-REST seminar april 2014
Program
9.00 Velkomst og præsentationsrunde
9.15 Oplæg: REST (Jakob Bendsen, Lund&Bendsen)
9.45 Pause
10.00 Oplæg: F2 REST og Mason (Jørn Wildt, cBrain)
10.45 Brainstorm på emner
11.00 Open Space Session #1
12.00 Frokost
13.00 Open Space Session #2
14.00 Pause
14.15 Oplæg: Tradeshifts API (Jan Ypma, Tradeshift)
15.00 Pause
15.15 Open Space Session #3
16.15 Pause
16.30 Open Space Session #4
17.30 Wrap up
18.00 Middag
F2 REST / Mason
●
F2 demo – digital sagsbehandling
●
Et par teknikker
●
F2 REST demo
●
Mason
F2 Digitaliseringsplatform
●
Dokumentlagring og deling (fælles arkiv)
●
Sagsbehandling, aktindsigt og forelæggelser
●
Fuld e-mail-klient
●
Ekstern selvbetjening
●
Indlejret chat (tekst)
●
Mobil adgang (iOS, HTML)
●
CPR, Digital Post, ArcGIS, Byg & Miljø, Exchange, AD, GMail
●
Anvendes hos 8 ministerier, 2 kommuner, en håndfuld
styrelser og nogle enkelte private.
DEMO
● Codebase1.dll
● Codebase2.dll
● …
● CodebaseN.dll
● Configuration
Service 1
DB
SQL
● Codebase1.dll
● Codebase2.dll
● …
● CodebaseN.dll
● Configuration
Service 2
● Codebase1.dll
● Codebase2.dll
● …
● CodebaseN.dll
● Configuration
Service 3
SQL
SQL
Før REST
+ Stigende behov for
ad-hoc integrationer
hos kunderne
F2 REST
Selvbetjening
Mobile
Byg & Miljø
GIS
Kundens integrationer
Operationer
● Authentikering
● Søgning
● Læsning
● Opdatering
● Oprettelse
● Sletning
Data
● Sager
● Akter
● Dokumenter
● Parter
● Møder
Desktop
klient
Links
HTML
<a href=”...” rel=”next”>Næste</a>
ATOM
<atom:link href=”...” rel=”next” title=”Næste”/>
JSON
{
”next”:
{
”href”: ”...”,
”title”: ”Næste”
}
}
Post Once Exactly
●
Undgå dobbelte oprettelser
●
POST 1 => Redirect, factory ressource
●
POST 2 => Udfør (idempotent), redirect
– Status 201 Created (første gang)
– Status 303 See other (efterfølgende)
Hvorfor ikke PUT?
DEMO
JSON-Patch
PATCH /my/data HTTP/1.1
Content-Type: application/json-patch+json
If-Match: "abc123"
[
{ "op": "replace", "path": "/Access", "value": ”Open” },
{ "op": "remove", "path": "/a/b/c" },
{ "op": "add", "path": "/a/b/c", "value": [ "foo" ] },
{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
{ "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
]
Problemer med F2 REST
●
XML matcher dårligt
●
Udvikler kan ikke udforske actions
●
Er ikke standardiseret
●
JSON-Patch er et dårligt match med XML
Findes der et bedre alternativ? Tjah ...
(hyper)media-types
●
HAL (JSON + links + link templates)
●
Siren (JSON + links + key-value-actions)
●
Collection-JSON (JSON + lister + links + key-
value-actions + error handling)
●
Hydra (JSON Linked Data)
●
JSON API (JSON + entiteter)
●
HTML
●
ATOM (XML + lister + links)
Mason
●
JSON format
●
Let tilgængeligt
●
Links
●
Link templates
●
Actions (JSON payload + file upload)
●
Standard fejlhåndtering
●
Kommunikation til klientudvikler
Curies + Namespaces
{
"@namespaces": {
"is": {
"name": "http://issue-tracker.org/reltypes.html#"
}
},
"@links": {
"is:issues": {
"href": "...",
"title": "All issues in project"
}
}
}
DEMO
http://localhost/mason-demo/projects/1
Referencer
●
Mason: https://github.com/JornWildt/Mason
●
HAL: http://stateless.co/hal_specification.html
●
Sirene: https://github.com/kevinswiber/siren
●
Coll-JSON: http://amundsen.com/media-types/collection/format/
●
Hydra: http://www.markus-lanthaler.com/hydra/
●
JSON-Patch: https://tools.ietf.org/html/rfc6902
Bøger
Kontaktinformation
Jørn Wildt
Twitter @JornWildt
Arbejde: jw@cbrain.dk
Privat: jw@fjeldgruppen.dk
Blog: http://soabits.blogspot.dk/
LinkedIn: https://www.linkedin.com/in/jornwildt

Weitere ähnliche Inhalte

Ähnlich wie F2-REST seminar april 2014

CV for Lars Werner Bay
CV for Lars Werner BayCV for Lars Werner Bay
CV for Lars Werner BayLars Bay
 
20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune
20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune
20160301 Red Hat JBoss Fuse i praksis i Syddjurs KommuneJon Badstue Pedersen
 
Tips & tricks - TOPdesk on Tour Denmark 2019
Tips & tricks - TOPdesk on Tour Denmark 2019Tips & tricks - TOPdesk on Tour Denmark 2019
Tips & tricks - TOPdesk on Tour Denmark 2019TOPdesk
 
Udvikling af en app med brug af Domino Data Dervice Apiet
Udvikling af en app med brug af Domino Data Dervice ApietUdvikling af en app med brug af Domino Data Dervice Apiet
Udvikling af en app med brug af Domino Data Dervice ApietJens Bruntt
 
IT Branchen & Dansk Erhverv: Disruption, Design & Digital Prototyping
IT Branchen & Dansk Erhverv: Disruption, Design & Digital PrototypingIT Branchen & Dansk Erhverv: Disruption, Design & Digital Prototyping
IT Branchen & Dansk Erhverv: Disruption, Design & Digital PrototypingPlant
 
Clio online flow undervisning
Clio online flow undervisningClio online flow undervisning
Clio online flow undervisningJan-Erik Revsbech
 
Adobe Bridge - det grafiske operativsystem
Adobe Bridge - det grafiske operativsystemAdobe Bridge - det grafiske operativsystem
Adobe Bridge - det grafiske operativsystemKaare Bjoern Jensen
 
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...Microsoft
 

Ähnlich wie F2-REST seminar april 2014 (13)

Angular2 workshop
Angular2 workshopAngular2 workshop
Angular2 workshop
 
Automatiseret GUI-test af Lars Kjølholm, BRF Kredit
Automatiseret GUI-test af Lars Kjølholm, BRF KreditAutomatiseret GUI-test af Lars Kjølholm, BRF Kredit
Automatiseret GUI-test af Lars Kjølholm, BRF Kredit
 
CV for Lars Werner Bay
CV for Lars Werner BayCV for Lars Werner Bay
CV for Lars Werner Bay
 
20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune
20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune
20160301 Red Hat JBoss Fuse i praksis i Syddjurs Kommune
 
Tips & tricks - TOPdesk on Tour Denmark 2019
Tips & tricks - TOPdesk on Tour Denmark 2019Tips & tricks - TOPdesk on Tour Denmark 2019
Tips & tricks - TOPdesk on Tour Denmark 2019
 
Udvikling af en app med brug af Domino Data Dervice Apiet
Udvikling af en app med brug af Domino Data Dervice ApietUdvikling af en app med brug af Domino Data Dervice Apiet
Udvikling af en app med brug af Domino Data Dervice Apiet
 
Wordpress Multisite
Wordpress MultisiteWordpress Multisite
Wordpress Multisite
 
IT Branchen & Dansk Erhverv: Disruption, Design & Digital Prototyping
IT Branchen & Dansk Erhverv: Disruption, Design & Digital PrototypingIT Branchen & Dansk Erhverv: Disruption, Design & Digital Prototyping
IT Branchen & Dansk Erhverv: Disruption, Design & Digital Prototyping
 
Cv
CvCv
Cv
 
PLC miljø kontra embedded systemer af Jan Jakob Jessen, Sanddru ApS
PLC miljø kontra embedded systemer af Jan Jakob Jessen, Sanddru ApSPLC miljø kontra embedded systemer af Jan Jakob Jessen, Sanddru ApS
PLC miljø kontra embedded systemer af Jan Jakob Jessen, Sanddru ApS
 
Clio online flow undervisning
Clio online flow undervisningClio online flow undervisning
Clio online flow undervisning
 
Adobe Bridge - det grafiske operativsystem
Adobe Bridge - det grafiske operativsystemAdobe Bridge - det grafiske operativsystem
Adobe Bridge - det grafiske operativsystem
 
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
Microsoft Next 2014 - Productivity session 5 - Projektoverblik, effektivt sam...
 

F2-REST seminar april 2014

  • 1. RESTful API design Open Space April 2014 Jørn Wildt og Jakob Bendsen
  • 2. cBrain ● ”The Process Company” ● 48 ansatte – 28 udviklere, alle fra Danmark – Master eller Ph.D (DTU, DIKU og ITU) ● C# + MS-SQL + IIS ● 50% specialprojekter ● 50% standardprodukt (F2)
  • 3. REST: Et løfte om Løst koblede Uafhængige Skalerbare Tilgængelige Distribuerede systemer
  • 6. Program 9.00 Velkomst og præsentationsrunde 9.15 Oplæg: REST (Jakob Bendsen, Lund&Bendsen) 9.45 Pause 10.00 Oplæg: F2 REST og Mason (Jørn Wildt, cBrain) 10.45 Brainstorm på emner 11.00 Open Space Session #1 12.00 Frokost 13.00 Open Space Session #2 14.00 Pause 14.15 Oplæg: Tradeshifts API (Jan Ypma, Tradeshift) 15.00 Pause 15.15 Open Space Session #3 16.15 Pause 16.30 Open Space Session #4 17.30 Wrap up 18.00 Middag
  • 7. F2 REST / Mason ● F2 demo – digital sagsbehandling ● Et par teknikker ● F2 REST demo ● Mason
  • 8. F2 Digitaliseringsplatform ● Dokumentlagring og deling (fælles arkiv) ● Sagsbehandling, aktindsigt og forelæggelser ● Fuld e-mail-klient ● Ekstern selvbetjening ● Indlejret chat (tekst) ● Mobil adgang (iOS, HTML) ● CPR, Digital Post, ArcGIS, Byg & Miljø, Exchange, AD, GMail ● Anvendes hos 8 ministerier, 2 kommuner, en håndfuld styrelser og nogle enkelte private.
  • 10. ● Codebase1.dll ● Codebase2.dll ● … ● CodebaseN.dll ● Configuration Service 1 DB SQL ● Codebase1.dll ● Codebase2.dll ● … ● CodebaseN.dll ● Configuration Service 2 ● Codebase1.dll ● Codebase2.dll ● … ● CodebaseN.dll ● Configuration Service 3 SQL SQL Før REST + Stigende behov for ad-hoc integrationer hos kunderne
  • 11. F2 REST Selvbetjening Mobile Byg & Miljø GIS Kundens integrationer Operationer ● Authentikering ● Søgning ● Læsning ● Opdatering ● Oprettelse ● Sletning Data ● Sager ● Akter ● Dokumenter ● Parter ● Møder Desktop klient
  • 12. Links HTML <a href=”...” rel=”next”>Næste</a> ATOM <atom:link href=”...” rel=”next” title=”Næste”/> JSON { ”next”: { ”href”: ”...”, ”title”: ”Næste” } }
  • 13. Post Once Exactly ● Undgå dobbelte oprettelser ● POST 1 => Redirect, factory ressource ● POST 2 => Udfør (idempotent), redirect – Status 201 Created (første gang) – Status 303 See other (efterfølgende) Hvorfor ikke PUT?
  • 14. DEMO
  • 15. JSON-Patch PATCH /my/data HTTP/1.1 Content-Type: application/json-patch+json If-Match: "abc123" [ { "op": "replace", "path": "/Access", "value": ”Open” }, { "op": "remove", "path": "/a/b/c" }, { "op": "add", "path": "/a/b/c", "value": [ "foo" ] }, { "op": "move", "from": "/a/b/c", "path": "/a/b/d" }, { "op": "copy", "from": "/a/b/d", "path": "/a/b/e" } ]
  • 16. Problemer med F2 REST ● XML matcher dårligt ● Udvikler kan ikke udforske actions ● Er ikke standardiseret ● JSON-Patch er et dårligt match med XML Findes der et bedre alternativ? Tjah ...
  • 17. (hyper)media-types ● HAL (JSON + links + link templates) ● Siren (JSON + links + key-value-actions) ● Collection-JSON (JSON + lister + links + key- value-actions + error handling) ● Hydra (JSON Linked Data) ● JSON API (JSON + entiteter) ● HTML ● ATOM (XML + lister + links)
  • 18. Mason ● JSON format ● Let tilgængeligt ● Links ● Link templates ● Actions (JSON payload + file upload) ● Standard fejlhåndtering ● Kommunikation til klientudvikler
  • 19. Curies + Namespaces { "@namespaces": { "is": { "name": "http://issue-tracker.org/reltypes.html#" } }, "@links": { "is:issues": { "href": "...", "title": "All issues in project" } } }
  • 21. Referencer ● Mason: https://github.com/JornWildt/Mason ● HAL: http://stateless.co/hal_specification.html ● Sirene: https://github.com/kevinswiber/siren ● Coll-JSON: http://amundsen.com/media-types/collection/format/ ● Hydra: http://www.markus-lanthaler.com/hydra/ ● JSON-Patch: https://tools.ietf.org/html/rfc6902
  • 23. Kontaktinformation Jørn Wildt Twitter @JornWildt Arbejde: jw@cbrain.dk Privat: jw@fjeldgruppen.dk Blog: http://soabits.blogspot.dk/ LinkedIn: https://www.linkedin.com/in/jornwildt