Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

120305 intro-rest

2,486 views

Published on

Some brief intro to REST as paradigm for building Web services (in German)

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

120305 intro-rest

  1. 1. REST-konformeSchnittstellen für Web Services
  2. 2. Remote Procedure Call CORBA Remote Method Invocation XML-RPC SOAP Thrift
  3. 3. REST
  4. 4. REST ist eine ArchitekturHTTP ist eine konkreteImplementierung davon
  5. 5. Ressourcenhttp://www.mybank.com/accounts/http://www.mybank.com/accounts/4582http://www.mybank.com/accounts/4582/statements/http://www.mybank.com/accounts/4582/statements/latesthttp://www.mybank.com/accounts/4582/transfershttp://www.mybank.com/accounts/4582/transfers/12http://www.mybank.com/accounts/4582/transfers/12?from=...&to=...http://www.mybank.com/accounts/4582/transfers/12/recipient
  6. 6. Repräsentationen{ „account“ : { „id“ : 4582, „firstName“ : „Singh“, „lastName“ : „Darshan“, „balance“ : 25382.20, „openDate“ : „2002-02-20“ }}<?xml version=“1.0“?><account> <id>4582</id> <firstName>Singh</firstName> <lastName>Darshan</lastName> <balance>25382.20</balance> <openDate>2002-02-20</openDate></account>
  7. 7. 4 Operationen GET POST PUT DELETE
  8. 8. 4 Operationensafe? GET POST PUT DELETE
  9. 9. 4 Operationensafe? idempotent? GET POST PUT DELETE
  10. 10. Hypermedia Person Transfer PersonAccount Statement Balance
  11. 11. Zustandslose Kommunikation Keine Sessions Keine CookiesJede Anfrage enthält alle Informationen, die der Server für die Verarbeitung benötigt.
  12. 12. REST ist nurein Paradigma
  13. 13. Häufige „Fehler“
  14. 14. RPC Stilhttp://www.mybank.com/accounts/4582?action=transfer&dest=9811&amount=100
  15. 15. POST Tunnelinghttp://www.mybank.com/accounts?action=close&id=4582
  16. 16. Vermischung Ressource und RepräsentationGET /accounts/4982.json?apikey=912864GET /accounts/4982Accept: application/jsonX-apikey: 912864
  17. 17. Keine Links{ „account“ : { „id“ : 4582, „firstName“ : „Singh“, „lastName“ : „Darshan“, „balance“ : 25382.20, „openDate“ : „2002-02-20“ }}
  18. 18. Nur interne IDs{ „account“ : { „id“ : 4582, „owner“ : 56120, „balance“ : 25382.20, „openDate“ : „2002-02-20“ }}
  19. 19. Keine Links zu Sub-Ressourcen{ „account“ : { „id“ : 4582, „owner“ : „http//www.mybank.com/clients/561202“, „balance“ : 25382.20, „openDate“ : „2002-02-20“ }}
  20. 20. Korrekt:{ „account“ : { „id“ : 4582, „owner“ : „http//www.mybank.com/clients/561202“, „statements“ : „http://www.mybank.com/accounts/ 4582/statements“, „transfers“ : „http://www.mybank.com/accounts/ 4582/transfers“, „balance“ : 25382.20, „openDate“ : „2002-02-20“ }}
  21. 21. HTTP Status CodesGET /accounts/4982HTTP/1.1 200 OKContent-Type: application/json{ „error: { „code“ : 491, „message“ : „Not authorized“ } }
  22. 22. Zusammenfassung• Wichtiges Paradigma für moderne APIs• REST ist offen für Interpretationen• Entwicklungsframeworks helfen nur wenig

×