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"}`, ); });