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# +...
REST: Et løfte om
Løst koblede
Uafhængige
Skalerbare
Tilgængelige
Distribuerede systemer
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...
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...
DEMO
● Codebase1.dll
● Codebase2.dll
● …
● CodebaseN.dll
● Configuration
Service 1
DB
SQL
● Codebase1.dll
● Codebase2.dll
● …
●...
F2 REST
Selvbetjening
Mobile
Byg & Miljø
GIS
Kundens integrationer
Operationer
● Authentikering
● Søgning
● Læsning
● Opda...
Links
HTML
<a href=”...” rel=”next”>Næste</a>
ATOM
<atom:link href=”...” rel=”next” title=”Næste”/>
JSON
{
”next”:
{
”href...
Post Once Exactly
●
Undgå dobbelte oprettelser
●
POST 1 => Redirect, factory ressource
●
POST 2 => Udfør (idempotent), red...
DEMO
JSON-Patch
PATCH /my/data HTTP/1.1
Content-Type: application/json-patch+json
If-Match: "abc123"
[
{ "op": "replace", "path...
Problemer med F2 REST
●
XML matcher dårligt
●
Udvikler kan ikke udforske actions
●
Er ikke standardiseret
●
JSON-Patch er ...
(hyper)media-types
●
HAL (JSON + links + link templates)
●
Siren (JSON + links + key-value-actions)
●
Collection-JSON (JSO...
Mason
●
JSON format
●
Let tilgængeligt
●
Links
●
Link templates
●
Actions (JSON payload + file upload)
●
Standard fejlhånd...
Curies + Namespaces
{
"@namespaces": {
"is": {
"name": "http://issue-tracker.org/reltypes.html#"
}
},
"@links": {
"is:issu...
DEMO
http://localhost/mason-demo/projects/1
Referencer
●
Mason: https://github.com/JornWildt/Mason
●
HAL: http://stateless.co/hal_specification.html
●
Sirene: https:/...
Bøger
Kontaktinformation
Jørn Wildt
Twitter @JornWildt
Arbejde: jw@cbrain.dk
Privat: jw@fjeldgruppen.dk
Blog: http://soabits.blo...
F2-REST seminar april 2014
F2-REST seminar april 2014
Upcoming SlideShare
Loading in...5
×

F2-REST seminar april 2014

186

Published on

F2 slides fra "REST API Open Space" ved cBrain og Lund&Bendsen.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
186
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

F2-REST seminar april 2014

  1. 1. RESTful API design Open Space April 2014 Jørn Wildt og Jakob Bendsen
  2. 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. 3. REST: Et løfte om Løst koblede Uafhængige Skalerbare Tilgængelige Distribuerede systemer
  4. 4. 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
  5. 5. F2 REST / Mason ● F2 demo – digital sagsbehandling ● Et par teknikker ● F2 REST demo ● Mason
  6. 6. 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.
  7. 7. DEMO
  8. 8. ● 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
  9. 9. 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
  10. 10. Links HTML <a href=”...” rel=”next”>Næste</a> ATOM <atom:link href=”...” rel=”next” title=”Næste”/> JSON { ”next”: { ”href”: ”...”, ”title”: ”Næste” } }
  11. 11. 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?
  12. 12. DEMO
  13. 13. 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" } ]
  14. 14. 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 ...
  15. 15. (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)
  16. 16. Mason ● JSON format ● Let tilgængeligt ● Links ● Link templates ● Actions (JSON payload + file upload) ● Standard fejlhåndtering ● Kommunikation til klientudvikler
  17. 17. Curies + Namespaces { "@namespaces": { "is": { "name": "http://issue-tracker.org/reltypes.html#" } }, "@links": { "is:issues": { "href": "...", "title": "All issues in project" } } }
  18. 18. DEMO http://localhost/mason-demo/projects/1
  19. 19. 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
  20. 20. Bøger
  21. 21. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×