← Усі задачіNode.js · Junior
Маршрут із параметрами
Роутери Express і Fastify описують маршрути шаблонами: /users/:id/posts/:postId. Напишіть matchRoute(pattern, path), що повертає об'єкт параметрів, якщо шлях підходить ({ id: "7", postId: "99" }), або null, якщо ні.
Сталі частини мають збігатися точно, кількість сегментів - теж. Завершальний / і query-рядок (?page=2) не заважають збігу, а значення параметрів декодуються (my%20report.pdf → my report.pdf).
Ctrl+Enter - запустити тести. Tab - відступ; щоб вийти з редактора клавіатурою, натисніть Esc, а потім Tab. Код зберігається в цьому браузері.
Тести (6)
expect(matchRoute('/users/:id', '/users/42')).toEqual({ id: '42' });
expect(matchRoute('/users/:id/posts/:postId', '/users/7/posts/99')).toEqual({ id: '7', postId: '99' });
expect(matchRoute('/health', '/health')).toEqual({});
expect(matchRoute('/users/:id', '/posts/42')).toBe(null); expect(matchRoute('/users/:id', '/users/42/posts')).toBe(null); expect(matchRoute('/users/:id', '/users')).toBe(null);
expect(matchRoute('/users/:id', '/users/42/')).toEqual({ id: '42' }); expect(matchRoute('/search/:q', '/search/hello?page=2')).toEqual({ q: 'hello' });
expect(matchRoute('/files/:name', '/files/my%20report.pdf')).toEqual({ name: 'my report.pdf' });