response-projection-example.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import http from 'http';
  2. import {HttpMethod, TrieRouter} from '@e22m4u/js-trie-router';
  3. import {
  4. HttpData,
  5. TrieRouterDataMapper,
  6. } from '@e22m4u/js-trie-router-data-mapper';
  7. const router = new TrieRouter();
  8. router.useService(TrieRouterDataMapper);
  9. // регистрация маршрута для проверки
  10. // проекции возвращаемого объекта
  11. router.defineRoute({
  12. method: HttpMethod.GET,
  13. path: '/responseProjection',
  14. meta: {
  15. dataMap: {
  16. response: {
  17. source: HttpData.RESPONSE_BODY,
  18. projection: {foo: true, bar: false},
  19. },
  20. },
  21. },
  22. handler: () => {
  23. return {foo: 10, bar: 20, baz: 30};
  24. },
  25. });
  26. // создание экземпляра HTTP сервера
  27. // и подключение обработчика запросов
  28. const server = new http.Server();
  29. server.on('request', router.requestListener);
  30. // прослушивание входящих запросов
  31. // на указанный адрес и порт
  32. const port = 3000;
  33. const host = '0.0.0.0';
  34. server.listen(port, host, function () {
  35. const cyan = '\x1b[36m%s\x1b[0m';
  36. console.log(cyan, 'Server listening on port:', port);
  37. console.log(
  38. cyan,
  39. 'Open in browser:',
  40. `http://${host}:${port}/responseProjection`,
  41. );
  42. });