response-projection-example.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. schema: 'number',
  19. projection: {foo: true, bar: false},
  20. },
  21. },
  22. },
  23. handler: () => {
  24. return {foo: 10, bar: 20, baz: 30};
  25. },
  26. });
  27. // создание экземпляра HTTP сервера
  28. // и подключение обработчика запросов
  29. const server = new http.Server();
  30. server.on('request', router.requestListener);
  31. // прослушивание входящих запросов
  32. // на указанный адрес и порт
  33. const port = 3000;
  34. const host = '0.0.0.0';
  35. server.listen(port, host, function () {
  36. const cyan = '\x1b[36m%s\x1b[0m';
  37. console.log(cyan, 'Server listening on port:', port);
  38. console.log(
  39. cyan,
  40. 'Open in browser:',
  41. `http://${host}:${port}/responseProjection`,
  42. );
  43. });