← Alle AufgabenNode.js · Junior

Route mit Parametern

Die Router von Express und Fastify beschreiben Routen mit Mustern: /users/:id/posts/:postId. Schreib matchRoute(pattern, path), das ein Objekt mit Parametern liefert, wenn der Pfad passt ({ id: "7", postId: "99" }), oder null, wenn nicht.

Statische Teile müssen exakt passen, ebenso die Zahl der Segmente. Ein abschließendes / und ein Query-String (?page=2) verhindern keinen Treffer, und Parameterwerte werden dekodiert (my%20report.pdf → my report.pdf).

Tests (6)

  1. expect(matchRoute('/users/:id', '/users/42')).toEqual({ id: '42' });
  2. expect(matchRoute('/users/:id/posts/:postId', '/users/7/posts/99')).toEqual({ id: '7', postId: '99' });
  3. expect(matchRoute('/health', '/health')).toEqual({});
  4. expect(matchRoute('/users/:id', '/posts/42')).toBe(null);
    expect(matchRoute('/users/:id', '/users/42/posts')).toBe(null);
    expect(matchRoute('/users/:id', '/users')).toBe(null);
  5. expect(matchRoute('/users/:id', '/users/42/')).toEqual({ id: '42' });
    expect(matchRoute('/search/:q', '/search/hello?page=2')).toEqual({ q: 'hello' });
  6. expect(matchRoute('/files/:name', '/files/my%20report.pdf')).toEqual({ name: 'my report.pdf' });