img - GitHub Pages
img - GitHub Pages
img - GitHub Pages
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.