tisdag 11 november 2008

RESTful SOA

Första passet för dagen blev att lyssna på hur man kan och bör exponera sina tjänster med REST-gränssnitt. I princip alla IBM:s WebSphere-produkter har idag stöd för att exponera tjänsterna med REST för att på så sätt underlätta för den som ska anropa tjänsterna. För att få bra REST-stöd i WebSphere Application Server måste man installera Web 2.0 feature pack. Om man ska exponera en tjänst med REST så måste man vara medveten om de begränsningar detta sätter gällande t.ex. säkerhet, transaktionshantering, stöd för andra protokoll än HTTP osv, eftersom det ju är det som är hela grejen med REST att förenkla för klienten eftersom valen redan är gjorda. Jämför man med att exponera tjänsten som en Web Service så finns ju där en mycket större flexibilitet men komplexiteten är ju också betydligt högre. Föreläsaren gick igenom vad som är viktigt när man designar sina REST-tjänster. Här är några punkter:
  • Det är viktigt att alla GET-anrop aldrig uppdaterar något. För detta finns ju POST och DELETE.

  • Returkoderna bör inte bryta mot HTTP-specifikationen.

  • En strategi för namnsättning av URL:erna bör tas fram och man bör undvika att skicka in saker som parametrar eftersom man då lätt kan få sina tjänster att likna RPC-tjänster (t.ex. /doWork?action=delete)

  • Att skydda REST-tjänster gör man lämpligast genom att skydda URL:erna med hjälp av olika URL-mönster på vanligt maner. Det är här viktigt att tjänsterna sedan även kontrollerar att den som anropar har behörighet att komma åt den specifika informationen eftersom man i URL:erna enkelt kan ändra t.ex. olika id:n.

1 kommentar:

John Wilander sa...

Hoppas verkligen REST slår igenom. Det kommer ta bort mycket av det onda i WS över SOAP. Säkerhet är förvisso en utmaning men ws-* är ju inte en simpel grej det heller. Det kommer säkerligen bra sätt att lösa säkerhet i REST.

Mattias Karlsson tipsade om en bra introduktion till REST