| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import http from 'http';
- import {DataType} from '@e22m4u/js-data-schema';
- import {HttpMethod, TrieRouter} from '@e22m4u/js-trie-router';
- import {
- HttpData,
- TrieRouterDataMapper,
- } from '@e22m4u/js-trie-router-data-mapper';
- const router = new TrieRouter();
- router.useService(TrieRouterDataMapper);
- // регистрация маршрута для разбора
- // query параметра "filter"
- router.defineRoute({
- method: HttpMethod.GET,
- path: '/parseQuery',
- meta: {
- dataMapper: {
- filter: {
- source: HttpData.REQUEST_QUERY,
- property: 'filter',
- schema: {
- type: DataType.OBJECT,
- required: true,
- },
- },
- },
- },
- handler: ({state: {filter}}) => {
- return filter;
- },
- });
- // создание экземпляра HTTP сервера
- // и подключение обработчика запросов
- const server = new http.Server();
- server.on('request', router.requestListener);
- // прослушивание входящих запросов
- // на указанный адрес и порт
- const port = 3000;
- const host = '0.0.0.0';
- server.listen(port, host, function () {
- const cyan = '\x1b[36m%s\x1b[0m';
- console.log(cyan, 'Server listening on port:', port);
- console.log(
- cyan,
- 'Open in browser:',
- `http://${host}:${port}/parseQuery?filter={"foo":"bar"}`,
- );
- });
|