26.12.2014 Aufrufe

img - GitHub Pages

img - GitHub Pages

img - GitHub Pages

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.2. RP1 REST 59<br />

Das Beispiel im Quelltext 4.1 zeigt zwei Definitionen einer API-Route.<br />

23 var controller = require('./controller')<br />

24 , basicAuthentication = require('../policy/basicAuthentication')<br />

25 , authorizedForCommunity = require('../policy/authorizedForCommunity')<br />

26 , communityValidators = require('./validators')<br />

27 , utils = require('../utils')<br />

28 , modulePrefix = '/community';<br />

29<br />

30 module.exports = function initCommunityApi(api, apiPrefix) {<br />

31 var prefix = apiPrefix + modulePrefix;<br />

32<br />

33 // GET /api/community/:id<br />

34 api.get(prefix + '/:id(\\d+)', [<br />

35 basicAuthentication<br />

36 , authorizedForCommunity<br />

37 , controller.getCommunityWithId]);<br />

38<br />

39 // GET /api/community/:slug<br />

40 api.get(prefix + '/:slug', [<br />

41 basicAuthentication<br />

42 , authorizedForCommunity<br />

43 , controller.getCommunityWithSlug]);<br />

44<br />

45 // POST /api/community<br />

46 api.post(prefix, [<br />

47 basicAuthentication<br />

48 , communityValidators.createCommunity<br />

49 , controller.createCommunity<br />

50 ]);<br />

51 //...<br />

52 };<br />

Quelltext 4.1: Community API Definition [AJWi]<br />

Bei Zeile 34 wird eine “GET” API-Methode für das Abfragen einer Community mit<br />

der ID definiert. Wie man im definierten Array sieht, werden dabei mehrere Callbacks<br />

definiert, welche der Reihe nach aufgerufen werden und sicherstellen, dass jede Anfrage<br />

authentifiziert und autorisiert ist.<br />

Zeile 46 definiert eine “POST” API-Route um eine neue Community zu erstellen.<br />

Auch hier wird überprüft ob der Benutzer authentifiziert ist. Zusätzlich wird ein Daten-<br />

Validator verwendet, damit sichergestellt werden kann dass die Daten korrekt und ohne<br />

unerwünschte Zeichen sind.<br />

Aus Zeitgründen wurde kein Caching und keine Versionierung implementiert.<br />

Eine Versionierung wäre durch ein zusätzliches Präfix für die API-Routes problemlos<br />

möglich.<br />

Dasselbe gilt für das Caching. Jedes Objekt in der Datenbank hat eine Spalte mit<br />

der Information, wann es zuletzt modifiziert wurde. Durch diese Information kann ein<br />

generisches Caching implementiert werden.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!