@e22m4u/ts-rest-router 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +171 -74
  2. package/dist/cjs/index.cjs +352 -362
  3. package/dist/esm/controller-registry.js +37 -32
  4. package/dist/esm/debuggable-service.d.ts +10 -1
  5. package/dist/esm/debuggable-service.js +14 -3
  6. package/dist/esm/decorators/after-action/after-action-decorator.d.ts +9 -0
  7. package/dist/esm/decorators/{before/before-decorator.js → after-action/after-action-decorator.js} +7 -7
  8. package/dist/esm/decorators/{before/before-decorator.spec.js → after-action/after-action-decorator.spec.js} +19 -19
  9. package/dist/esm/decorators/{after/after-metadata.d.ts → after-action/after-action-metadata.d.ts} +4 -4
  10. package/dist/esm/decorators/after-action/after-action-metadata.js +5 -0
  11. package/dist/esm/decorators/{after/after-reflector.d.ts → after-action/after-action-reflector.d.ts} +5 -5
  12. package/dist/esm/decorators/{after/after-reflector.js → after-action/after-action-reflector.js} +6 -6
  13. package/dist/esm/decorators/{before/before-reflector.spec.js → after-action/after-action-reflector.spec.js} +23 -24
  14. package/dist/esm/decorators/after-action/index.d.ts +3 -0
  15. package/dist/esm/decorators/after-action/index.js +3 -0
  16. package/dist/esm/decorators/before-action/before-action-decorator.d.ts +9 -0
  17. package/dist/esm/decorators/{after/after-decorator.js → before-action/before-action-decorator.js} +7 -7
  18. package/dist/esm/decorators/{after/after-decorator.spec.js → before-action/before-action-decorator.spec.js} +19 -19
  19. package/dist/esm/decorators/{before/before-metadata.d.ts → before-action/before-action-metadata.d.ts} +4 -4
  20. package/dist/esm/decorators/before-action/before-action-metadata.js +5 -0
  21. package/dist/esm/decorators/{before/before-reflector.d.ts → before-action/before-action-reflector.d.ts} +5 -5
  22. package/dist/esm/decorators/{before/before-reflector.js → before-action/before-action-reflector.js} +6 -6
  23. package/dist/esm/decorators/{after/after-reflector.spec.js → before-action/before-action-reflector.spec.js} +23 -24
  24. package/dist/esm/decorators/before-action/index.d.ts +3 -0
  25. package/dist/esm/decorators/before-action/index.js +3 -0
  26. package/dist/esm/decorators/index.d.ts +4 -4
  27. package/dist/esm/decorators/index.js +4 -4
  28. package/dist/esm/decorators/request-context/request-context-decorator.d.ts +4 -4
  29. package/dist/esm/decorators/request-context/request-context-decorator.js +4 -4
  30. package/dist/esm/decorators/request-context/request-context-decorator.spec.js +6 -0
  31. package/dist/esm/decorators/request-context/request-context-reflector.spec.js +0 -1
  32. package/dist/esm/decorators/request-data/request-data-decorator.d.ts +10 -10
  33. package/dist/esm/decorators/request-data/request-data-decorator.js +10 -10
  34. package/dist/esm/decorators/request-data/request-data-decorator.spec.js +44 -32
  35. package/dist/esm/decorators/request-data/request-data-metadata.d.ts +1 -1
  36. package/dist/esm/decorators/request-data/request-data-reflector.spec.js +0 -1
  37. package/dist/esm/decorators/rest-action/index.d.ts +3 -0
  38. package/dist/esm/decorators/rest-action/index.js +3 -0
  39. package/dist/esm/decorators/rest-action/rest-action-decorator.d.ts +57 -0
  40. package/dist/esm/decorators/rest-action/rest-action-decorator.js +52 -0
  41. package/dist/esm/decorators/rest-action/rest-action-decorator.spec.js +401 -0
  42. package/dist/esm/decorators/{action/action-metadata.d.ts → rest-action/rest-action-metadata.d.ts} +6 -6
  43. package/dist/esm/decorators/rest-action/rest-action-metadata.js +5 -0
  44. package/dist/esm/decorators/rest-action/rest-action-reflector.d.ts +22 -0
  45. package/dist/esm/decorators/{action/action-reflector.js → rest-action/rest-action-reflector.js} +6 -6
  46. package/dist/esm/decorators/{action/action-reflector.spec.js → rest-action/rest-action-reflector.spec.js} +13 -14
  47. package/dist/esm/decorators/rest-controller/index.d.ts +3 -0
  48. package/dist/esm/decorators/rest-controller/index.js +3 -0
  49. package/dist/esm/decorators/rest-controller/rest-controller-decorator.d.ts +14 -0
  50. package/dist/esm/decorators/{controller/controller-decorator.js → rest-controller/rest-controller-decorator.js} +5 -5
  51. package/dist/esm/decorators/{controller/controller-decorator.spec.js → rest-controller/rest-controller-decorator.spec.js} +15 -15
  52. package/dist/esm/decorators/{controller/controller-metadata.d.ts → rest-controller/rest-controller-metadata.d.ts} +5 -5
  53. package/dist/esm/decorators/rest-controller/rest-controller-metadata.js +5 -0
  54. package/dist/esm/decorators/rest-controller/rest-controller-reflector.d.ts +20 -0
  55. package/dist/esm/decorators/rest-controller/rest-controller-reflector.js +24 -0
  56. package/dist/esm/decorators/{controller/controller-reflector.spec.js → rest-controller/rest-controller-reflector.spec.js} +12 -13
  57. package/dist/esm/errors/not-a-controller-error.js +1 -1
  58. package/dist/esm/types.d.ts +0 -10
  59. package/dist/esm/utils/index.d.ts +0 -1
  60. package/dist/esm/utils/index.js +0 -1
  61. package/eslint.config.js +1 -1
  62. package/package.json +15 -15
  63. package/src/controller-registry.spec.ts +192 -134
  64. package/src/controller-registry.ts +46 -39
  65. package/src/debuggable-service.spec.ts +0 -1
  66. package/src/debuggable-service.ts +17 -4
  67. package/src/decorators/{before/before-decorator.spec.ts → after-action/after-action-decorator.spec.ts} +19 -19
  68. package/src/decorators/{before/before-decorator.ts → after-action/after-action-decorator.ts} +9 -9
  69. package/src/decorators/{after/after-metadata.ts → after-action/after-action-metadata.ts} +5 -5
  70. package/src/decorators/{before/before-reflector.spec.ts → after-action/after-action-reflector.spec.ts} +33 -24
  71. package/src/decorators/{before/before-reflector.ts → after-action/after-action-reflector.ts} +13 -9
  72. package/src/decorators/after-action/index.ts +3 -0
  73. package/src/decorators/{after/after-decorator.spec.ts → before-action/before-action-decorator.spec.ts} +19 -19
  74. package/src/decorators/{after/after-decorator.ts → before-action/before-action-decorator.ts} +9 -9
  75. package/src/decorators/before-action/before-action-metadata.ts +17 -0
  76. package/src/decorators/{after/after-reflector.spec.ts → before-action/before-action-reflector.spec.ts} +40 -24
  77. package/src/decorators/{after/after-reflector.ts → before-action/before-action-reflector.ts} +18 -9
  78. package/src/decorators/before-action/index.ts +3 -0
  79. package/src/decorators/index.ts +4 -4
  80. package/src/decorators/request-context/request-context-decorator.spec.ts +7 -0
  81. package/src/decorators/request-context/request-context-decorator.ts +4 -4
  82. package/src/decorators/request-context/request-context-reflector.spec.ts +0 -1
  83. package/src/decorators/request-data/request-data-decorator.spec.ts +45 -32
  84. package/src/decorators/request-data/request-data-decorator.ts +10 -10
  85. package/src/decorators/request-data/request-data-metadata.ts +1 -1
  86. package/src/decorators/request-data/request-data-reflector.spec.ts +0 -1
  87. package/src/decorators/rest-action/index.ts +3 -0
  88. package/src/decorators/rest-action/rest-action-decorator.spec.ts +325 -0
  89. package/src/decorators/rest-action/rest-action-decorator.ts +166 -0
  90. package/src/decorators/{action/action-metadata.ts → rest-action/rest-action-metadata.ts} +7 -7
  91. package/src/decorators/{action/action-reflector.spec.ts → rest-action/rest-action-reflector.spec.ts} +13 -14
  92. package/src/decorators/rest-action/rest-action-reflector.ts +41 -0
  93. package/src/decorators/rest-controller/index.ts +3 -0
  94. package/src/decorators/{controller/controller-decorator.spec.ts → rest-controller/rest-controller-decorator.spec.ts} +16 -16
  95. package/src/decorators/{controller/controller-decorator.ts → rest-controller/rest-controller-decorator.ts} +14 -10
  96. package/src/decorators/{controller/controller-metadata.ts → rest-controller/rest-controller-metadata.ts} +6 -7
  97. package/src/decorators/{controller/controller-reflector.spec.ts → rest-controller/rest-controller-reflector.spec.ts} +21 -13
  98. package/src/decorators/rest-controller/rest-controller-reflector.ts +32 -0
  99. package/src/errors/not-a-controller-error.ts +4 -1
  100. package/src/types.ts +0 -10
  101. package/src/utils/index.ts +0 -1
  102. package/dist/esm/decorators/action/action-decorator.d.ts +0 -52
  103. package/dist/esm/decorators/action/action-decorator.js +0 -62
  104. package/dist/esm/decorators/action/action-decorator.spec.js +0 -59
  105. package/dist/esm/decorators/action/action-metadata.js +0 -5
  106. package/dist/esm/decorators/action/action-reflector.d.ts +0 -22
  107. package/dist/esm/decorators/action/index.d.ts +0 -3
  108. package/dist/esm/decorators/action/index.js +0 -3
  109. package/dist/esm/decorators/after/after-decorator.d.ts +0 -9
  110. package/dist/esm/decorators/after/after-metadata.js +0 -5
  111. package/dist/esm/decorators/after/index.d.ts +0 -3
  112. package/dist/esm/decorators/after/index.js +0 -3
  113. package/dist/esm/decorators/before/before-decorator.d.ts +0 -9
  114. package/dist/esm/decorators/before/before-metadata.js +0 -5
  115. package/dist/esm/decorators/before/index.d.ts +0 -3
  116. package/dist/esm/decorators/before/index.js +0 -3
  117. package/dist/esm/decorators/controller/controller-decorator.d.ts +0 -14
  118. package/dist/esm/decorators/controller/controller-metadata.js +0 -5
  119. package/dist/esm/decorators/controller/controller-reflector.d.ts +0 -20
  120. package/dist/esm/decorators/controller/controller-reflector.js +0 -24
  121. package/dist/esm/decorators/controller/index.d.ts +0 -3
  122. package/dist/esm/decorators/controller/index.js +0 -3
  123. package/dist/esm/utils/create-debugger.d.ts +0 -44
  124. package/dist/esm/utils/create-debugger.js +0 -81
  125. package/dist/esm/utils/create-debugger.spec.d.ts +0 -1
  126. package/dist/esm/utils/create-debugger.spec.js +0 -8
  127. package/src/decorators/action/action-decorator.spec.ts +0 -42
  128. package/src/decorators/action/action-decorator.ts +0 -98
  129. package/src/decorators/action/action-reflector.ts +0 -38
  130. package/src/decorators/action/index.ts +0 -3
  131. package/src/decorators/after/index.ts +0 -3
  132. package/src/decorators/before/before-metadata.ts +0 -17
  133. package/src/decorators/before/index.ts +0 -3
  134. package/src/decorators/controller/controller-reflector.ts +0 -28
  135. package/src/decorators/controller/index.ts +0 -3
  136. package/src/utils/create-debugger.spec.ts +0 -9
  137. package/src/utils/create-debugger.ts +0 -98
  138. /package/dist/esm/decorators/{action/action-decorator.spec.d.ts → after-action/after-action-decorator.spec.d.ts} +0 -0
  139. /package/dist/esm/decorators/{action/action-reflector.spec.d.ts → after-action/after-action-reflector.spec.d.ts} +0 -0
  140. /package/dist/esm/decorators/{after/after-decorator.spec.d.ts → before-action/before-action-decorator.spec.d.ts} +0 -0
  141. /package/dist/esm/decorators/{after/after-reflector.spec.d.ts → before-action/before-action-reflector.spec.d.ts} +0 -0
  142. /package/dist/esm/decorators/{before/before-decorator.spec.d.ts → rest-action/rest-action-decorator.spec.d.ts} +0 -0
  143. /package/dist/esm/decorators/{before/before-reflector.spec.d.ts → rest-action/rest-action-reflector.spec.d.ts} +0 -0
  144. /package/dist/esm/decorators/{controller/controller-decorator.spec.d.ts → rest-controller/rest-controller-decorator.spec.d.ts} +0 -0
  145. /package/dist/esm/decorators/{controller/controller-reflector.spec.d.ts → rest-controller/rest-controller-reflector.spec.d.ts} +0 -0
package/README.md CHANGED
@@ -8,7 +8,17 @@ REST маршрутизатор на основе контроллеров дл
8
8
  - Типизированные параметры запросов (body, query, params).
9
9
  - Поддержка middleware до и после обработки запроса.
10
10
  - Валидация входящих данных.
11
- - Поддержка всех HTTP методов (GET, POST, PUT, DELETE и т.д.).
11
+ - Поддержка всех HTTP методов (GET, POST, PUT, PATCH и DELETE).
12
+
13
+ ## Содержание
14
+
15
+ - [Установка](#установка)
16
+ - [Поддержка декораторов](#поддержка-декораторов)
17
+ - [Базовый пример](#базовый-пример)
18
+ - [Валидация](#валидация)
19
+ - [Декораторы](#декораторы)
20
+ - [Отладка](#отладка)
21
+ - [Тесты](#тесты)
12
22
 
13
23
  ## Установка
14
24
 
@@ -28,48 +38,49 @@ npm install @e22m4u/ts-rest-router
28
38
  }
29
39
  ```
30
40
 
31
- ## Базовое использование
41
+ ## Базовый пример
32
42
 
33
- Создание контроллера и методов
43
+ Создание контроллера и методов.
34
44
 
35
45
  ```ts
36
- import {get} from '@e22m4u/ts-rest-router';
37
- import {post} from '@e22m4u/ts-rest-router';
38
- import {field} from '@e22m4u/ts-rest-router';
39
46
  import {DataType} from '@e22m4u/ts-rest-router';
40
- import {controller} from '@e22m4u/ts-rest-router';
41
-
42
- @controller('/users') // путь контроллера
43
- class UserController { // класс контроллера
44
- @post('/login') // метод POST /users/login
47
+ import {getAction} from '@e22m4u/ts-rest-router';
48
+ import {postAction} from '@e22m4u/ts-rest-router';
49
+ import {requestField} from '@e22m4u/ts-rest-router';
50
+ import {restController} from '@e22m4u/ts-rest-router';
51
+
52
+ // объявление контроллера
53
+ // и базового пути /users
54
+ @restController('users')
55
+ class UserController {
56
+ // объявление метода POST /users/login
57
+ // (использует базовый путь контроллера)
58
+ @postAction('login')
45
59
  async login(
46
- @field('username', { // поле "username" в теле запроса
47
- type: DataType.STRING, // тип параметра допускает только строки
48
- required: true, // параметр является обязательным
49
- })
50
- username: string,
51
- @field('password', { // поле "password" в теле запроса
52
- type: DataType.STRING, // тип параметра допускает только строки
53
- required: true, // параметр является обязательным
54
- })
55
- password: string,
60
+ // инъекция значений указанных полей
61
+ // извлеизвлекаемых из тела запроса
62
+ @requestField('username') username?: string,
63
+ @requestField('password') password?: string,
56
64
  ) {
57
- return { // если метод возвращает объект,
58
- id: '123', // то результат будет представлен как
59
- firstName: 'John', // "Content-Type: application/json"
65
+ // так как метод возвращает объект,
66
+ // результат будет представлен как
67
+ // "Content-Type: application/json"
68
+ return {
69
+ id: 1,
70
+ firstName: 'John',
60
71
  lastName: 'Doe',
61
72
  };
62
73
  }
63
74
  }
64
75
  ```
65
76
 
66
- Регистрация контроллеров и запуск сервера
77
+ Регистрация контроллеров и запуск сервера.
67
78
 
68
79
  ```ts
69
80
  import http from 'http';
70
81
  import {RestRouter} from '@e22m4u/ts-rest-router';
71
82
 
72
- // создание роутера и регистрация контроллеров
83
+ // создание маршрутизатора и регистрация контроллеров
73
84
  const router = new RestRouter();
74
85
  router.registerController(UserController);
75
86
  router.registerController(ProductController);
@@ -84,83 +95,169 @@ server.listen('8080', '0.0.0.0', () => {
84
95
  });
85
96
  ```
86
97
 
98
+ ## Валидация
99
+
100
+ Указанные ниже декораторы используются для инъекции соответствующих параметров
101
+ запроса в качестве аргументов метода контроллера. Каждый из указанных декораторов
102
+ имеет параметр `schemaOrType`, в котором определяется тип ожидаемого значения
103
+ или схема для проверки данных.
104
+
105
+ - `@requestParam(name: string, schemaOrType?: DataSchema | DataType)`
106
+ *- извлечение URL параметра по названию;*
107
+ - `@requestQuery(name: string, schemaOrType?: DataSchema | DataType)`
108
+ *- извлечение query параметра по названию;*
109
+ - `@requestBody(schemaOrType?: DataSchema | DataType)`
110
+ *- извлечение тела запроса;*
111
+ - `@requestField(name: string, schemaOrType?: DataSchema | DataType)`
112
+ *- извлечение свойства из тела запроса;*
113
+ - `@requestHeader(name: string, schemaOrType?: DataSchema | DataType)`
114
+ *- извлечение заголовка запроса по названию;*
115
+ - `@requestCookie(name: string, schemaOrType?: DataSchema | DataType)`
116
+ *- извлечение cookie запроса по названию;*
117
+
118
+ Проверка входящих данных выполняется встроенным модулем
119
+ [@e22m4u/ts-data-schema](https://www.npmjs.com/package/@e22m4u/ts-data-schema)
120
+ (не требует установки). Ниже приводятся константы для определения допустимых
121
+ типов извлекаемого значения.
122
+
123
+ - `DataType.ANY` - принимает любой тип
124
+ - `DataType.STRING` - строковые значения
125
+ - `DataType.NUMBER` - числовые значения
126
+ - `DataType.BOOLEAN` - логические значения
127
+ - `DataType.ARRAY` - массивы
128
+ - `DataType.OBJECT` - объекты (не экземпляры)
129
+
130
+ Для определения дополнительных условий, используется объект `DataSchema`,
131
+ с помощью которого можно определить структуру ожидаемого объекта, допустимые
132
+ элементы массива, функции-валидаторы и другие ограничения входящих данных.
133
+
134
+ ```ts
135
+ type DataSchema = {
136
+ type: DataType;
137
+ items?: DataSchema;
138
+ properties?: {[key: string]: DataSchema};
139
+ required?: boolean;
140
+ validate?: CallableValidator | CallableValidator[];
141
+ default?: unknown;
142
+ }
143
+ ```
144
+
145
+ Пример проверки передаваемого объекта методом POST:
146
+
147
+ ```ts
148
+ import {DataType} from '@e22m4u/ts-rest-router';
149
+ import {getAction} from '@e22m4u/ts-rest-router';
150
+ import {postAction} from '@e22m4u/ts-rest-router';
151
+ import {requestField} from '@e22m4u/ts-rest-router';
152
+ import {restController} from '@e22m4u/ts-rest-router';
153
+
154
+ @restController('users')
155
+ class UserController {
156
+ @postAction() // POST /users
157
+ async create(
158
+ @requestBody({ // декоратор тела запроса
159
+ type: DataType.OBJECT, // в теле запроса ожидается объект
160
+ properties: {
161
+ name: { // схема свойства "name"
162
+ type: DataType.STRING, // свойство должно содержать строку
163
+ required: true, // свойство не может содержать undefined или null
164
+ validate: v => v.length > 2, // проверка длины строки
165
+ },
166
+ age: { // схема свойства "age"
167
+ type: DataType.NUMBER, // свойство должно являться числом
168
+ }
169
+ },
170
+ })
171
+ body: {name: string, age?: number},
172
+ ) {
173
+ return {
174
+ id: 1,
175
+ name: body.name,
176
+ age: body.age,
177
+ };
178
+ }
179
+ }
180
+ ```
181
+
87
182
  ## Декораторы
88
183
 
89
184
  Контроллер и методы:
90
185
 
91
- - `@controller` - определяет класс как контроллер
92
- - `@action` - базовый декоратор для методов
93
- - `@get` - GET запросы
94
- - `@post` - POST запросы
95
- - `@put` - PUT запросы
96
- - `@patch` - PATCH запросы
97
- - `@del` - DELETE запросы
186
+ - `@restController` - определяет класс как контроллер;
187
+ - `@restAction` - базовый декоратор для методов;
188
+ - `@getAction` - метод GET;
189
+ - `@postAction` - метод POST;
190
+ - `@putAction` - метод PUT;
191
+ - `@patchAction` - метод PATCH;
192
+ - `@deleteAction` - метод DELETE;
98
193
 
99
194
  Хуки запроса:
100
195
 
101
- - `@before` - middleware перед обработкой запроса
102
- - `@after` - middleware после обработки запроса
196
+ - `@beforeAction` - middleware перед обработкой запроса;
197
+ - `@afterAction` - middleware после обработки запроса;
103
198
 
104
199
  Параметры запроса:
105
200
 
106
- - `@param` - один параметр URL
107
- - `@params` - все параметры URL как объект
108
- - `@query` - один query параметр
109
- - `@queries` - все query параметры как объект
110
- - `@body` - тело запроса
111
- - `@field` - поле в теле запроса
112
- - `@header` - один заголовок
113
- - `@headers` - все заголовки как объект
114
- - `@cookie` - одна cookie
115
- - `@cookies` - все cookies как объект
116
- - `@requestContext` - доступ к контексту запроса
117
- - `@requestData` - универсальный декоратор для доступа к данным запроса
118
-
119
- #### `@controller(options?: ControllerOptions)`
201
+ - `@requestParam` - определенный URL параметр;
202
+ - `@requestParams` - все параметры URL как объект;
203
+ - `@requestQuery` - определенный query параметр;
204
+ - `@requestQueries` - все query параметры как объект;
205
+ - `@requestBody` - тело запроса;
206
+ - `@requestField` - поле в теле запроса;
207
+ - `@requestHeader` - определенный заголовок запроса;
208
+ - `@requestHeaders` - все заголовки запроса как объект;
209
+ - `@requestCookie` - определенный cookie запроса;
210
+ - `@requestCookies` - все cookies запроса как объект;
211
+ - `@requestContext` - доступ к контексту запроса;
212
+ - `@requestData` - доступ к данным запроса;
213
+ - `@httpRequest` - экземпляр `IncomingMessage`;
214
+ - `@httpResponse` - экземпляр `ServerResponse`;
215
+
216
+ #### `@restController(options?: ControllerOptions)`
120
217
 
121
218
  Определение контроллера.
122
219
 
123
220
  ```ts
124
- @controller()
221
+ @restController()
125
222
  class UserController {
126
- // методы контроллера
223
+ // ...
127
224
  }
128
225
  ```
129
226
 
130
- Определение пути контроллера.
227
+ Определение базового пути.
131
228
 
132
229
  ```ts
133
- @controller('/users') // путь контроллера
230
+ @restController('users')
134
231
  class UserController {
135
- // методы контроллера
232
+ // ...
136
233
  }
137
234
  ```
138
235
 
139
236
  Дополнительные параметры декоратора.
140
237
 
141
238
  ```ts
142
- @controller({
143
- path: '/api', // путь контроллера
239
+ @restController({
240
+ path: 'api', // базовый путь
144
241
  before: [authMiddleware], // middleware до обработки запроса
145
242
  after: [loggerMiddleware], // middleware после обработки запроса
146
243
  })
147
244
  class UserController {
148
- // методы контроллера
245
+ // ...
149
246
  }
150
247
  ```
151
248
 
152
- #### `@get(path: string, options?: ActionOptions)`
249
+ #### `@getAction(path: string, options?: ActionOptions)`
153
250
 
154
251
  Определение метода GET.
155
252
 
156
253
  ```ts
157
- @controller('/users') // путь контроллера
158
- class UserController { // класс контроллера
159
- @get('/whoAmI') // маршрут GET /users/whoAmI
254
+ @restController('users')
255
+ class UserController {
256
+ @getAction('whoAmI') // маршрут GET /users/whoAmI
160
257
  async whoAmI() {
161
- return { // если метод возвращает объект,
162
- name: 'John', // то результат будет представлен
163
- surname: 'Doe', // как "Content-Type: application/json"
258
+ return { // если метод возвращает объект,
259
+ name: 'John', // то результат будет представлен
260
+ surname: 'Doe', // как "Content-Type: application/json"
164
261
  };
165
262
  }
166
263
  }
@@ -169,9 +266,9 @@ class UserController { // класс контроллера
169
266
  Дополнительные параметры декоратора.
170
267
 
171
268
  ```ts
172
- @controller('/users') // путь контроллера
173
- class UserController { // класс контроллера
174
- @get('/whoAmI', { // маршрут GET /users/whoAmI
269
+ @restController('users')
270
+ class UserController {
271
+ @getAction('whoAmI', { // маршрут GET /users/whoAmI
175
272
  before: [authMiddleware], // middleware до обработки запроса
176
273
  after: [loggerMiddleware], // middleware после обработки запроса
177
274
  })
@@ -191,12 +288,12 @@ class UserController { // класс контроллера
191
288
  ```ts
192
289
  import {RequestContext} from '@e22m4u/js-trie-router';
193
290
 
194
- @controller('/users') // путь контроллера
195
- class UserController { // класс контроллера
196
- @get('/:id') // маршрут GET /users/:id
291
+ @restController('users')
292
+ class UserController {
293
+ @getAction(':id')
197
294
  findById(
198
- @requestContext() // включениее контекста запроса
199
- ctx: RequestContext, // в качестве параметра метода
295
+ @requestContext() // инъекция контекста запроса
296
+ ctx: RequestContext, // в качестве аргумента
200
297
  ) {
201
298
  console.log(ctx.req); // IncomingMessage
202
299
  console.log(ctx.res); // ServerResponse
@@ -218,9 +315,9 @@ class UserController { // класс контроллера
218
315
  import {ServerResponse} from 'http';
219
316
  import {IncomingMessage} from 'http';
220
317
 
221
- @controller('/users') // путь контроллера
318
+ @restController('/users') // путь контроллера
222
319
  class UserController { // класс контроллера
223
- @get('/:id') // маршрут GET /users/:id
320
+ @getAction('/:id') // маршрут GET /users/:id
224
321
  findById(
225
322
  @requestContext('req') // декоратор контекста запроса
226
323
  req: IncomingMessage, // включающий свойство "req"