e22m4u 1 неделя назад
Родитель
Сommit
a775874b81
1 измененных файлов с 29 добавлено и 24 удалено
  1. 29 24
      README.md

+ 29 - 24
README.md

@@ -8,6 +8,7 @@
 - [Установка](#установка)
 - [Описание](#описание)
 - [Использование](#использование)
+- [Примеры](#примеры)
 - [Тесты](#тесты)
 - [Лицензия](#лицензия)
 
@@ -43,7 +44,24 @@ const {TrieRouterDataMapper} = require('@e22m4u/js-trie-router-data-mapper');
 - Схема данных [@e22m4u/js-data-schema](https://www.npmjs.com/package/@e22m4u/js-data-schema)
 - Схема проекции [@e22m4u/js-data-projector](https://www.npmjs.com/package/@e22m4u/js-data-projector)
 
-Разметка определяется в метаданных маршрута.
+## Использование
+
+Для корректной работы требуется выполнить подключение модуля к маршрутизатору.
+В этот момент будут зарегистрированы два глобальных хука. Первый хук выполняется
+перед основным обработчиком маршрута и разбирает входящие данные, а второй
+фильтрует ответ сервера.
+
+```js
+import {TrieRouter} from '@e22m4u/js-trie-router';
+import {TrieRouterDataMapper} from '@e22m4u/js-trie-router-data-mapper';
+
+const router = new TrieRouter();
+router.useService(TrieRouterDataMapper);
+```
+
+Разметка данных задается в свойстве `dataMapper` метаданных маршрута. Ключи
+этого объекта определяют имена полей, добавляемых в контекст запроса, а значения
+описывают правила извлечения, валидации и проекции для каждого источника данных.
 
 ```js
 import {HttpMethod} from '@e22m4u/js-trie-router';
@@ -53,7 +71,6 @@ router.defineRoute({
   method: HttpMethod.POST,
   path: '/createUser',
   meta: {
-    // разметка данных
     dataMapper: {
       userData: { // свойство "userData" будет добавлено в "ctx.state"
         source: HttpData.REQUEST_BODY, // источник данных
@@ -93,40 +110,28 @@ export const HttpData = {
 
 ```js
 export const DataType = {
-  ANY: "any",
-  STRING: "string",
-  NUMBER: "number",
-  BOOLEAN: "boolean",
-  ARRAY: "array",
-  OBJECT: "object",
+  ANY: 'any',
+  STRING: 'string',
+  NUMBER: 'number',
+  BOOLEAN: 'boolean',
+  ARRAY: 'array',
+  OBJECT: 'object',
 }
 ```
 
-## Использование
-
-Подключение модуля к маршрутизатору.
-
-```js
-import {TrieRouter} from '@e22m4u/js-trie-router';
-import {TrieRouterDataMapper} from '@e22m4u/js-trie-router-data-mapper';
-
-const router = new TrieRouter();
-router.useService(TrieRouterDataMapper);
-```
+## Примеры
 
-Пример парсинга Query-параметра.
+Извлечение и разбор Query-параметра с JSON значением.
 
 ```js
 import {HttpMethod} from '@e22m4u/js-trie-router';
 import {HttpData, DataType} from '@e22m4u/js-trie-router-data-mapper';
 
+// GET /parseQuery?filter={"foo":"bar"}
 router.defineRoute({
   method: HttpMethod.GET,
   path: '/parseQuery',
   meta: {
-    // в объекте "dataMapper" определяется набор свойств, которые
-    // будут переданы в состояние текущего запроса "ctx.state",
-    // свойства будут содержать данные согласно указанной схеме
     dataMapper: {
       filter: { // свойство "filter" будет добавлено в "ctx.state"
         source: HttpData.REQUEST_QUERY, // источник данных
@@ -152,7 +157,7 @@ router.defineRoute({
 });
 ```
 
-Пример проекции ответа.
+Фильтрация свойств возвращаемого объекта согласно схеме проекции.
 
 ```js
 import {HttpMethod} from '@e22m4u/js-trie-router';