comparison xml/ru/docs/njs/reference.xml @ 2295:a1d0238ffb61

Updated HTTP and stream objects in Russian njs reference.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 27 Nov 2018 19:04:53 +0300
parents 65c6c1ee3c78
children 3a8d96efece6
comparison
equal deleted inserted replaced
2294:58df9b14b8ec 2295:a1d0238ffb61
19 </para> 19 </para>
20 20
21 </section> 21 </section>
22 22
23 23
24 <section id="http" name="HTTP"> 24 <section id="http_stream" name="Объекты nginx">
25
26
27 <section id="http" name="HTTP-запрос">
25 28
26 <para> 29 <para>
27 Объект <literal>HTTP</literal> доступен только в 30 Объект <literal>HTTP</literal> доступен только в
28 модуле <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link>. 31 модуле <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link>.
29 Все строки в объекте <literal>HTTP</literal> являются 32 Все строки в объекте <literal>HTTP</literal> являются
30 <link id="strings">байтовыми строками</link>. 33 <link id="string">байтовыми строками</link>.
31 </para> 34
32
33
34 <section id="http_request" name="Запрос">
35
36 <para>
37 <list type="tag"> 35 <list type="tag">
38 36
39 <tag-name><literal>r.args{}</literal></tag-name> 37 <tag-name><literal>r.args{}</literal></tag-name>
40 <tag-desc> 38 <tag-desc>
41 объект аргументов запроса, только чтение 39 объект аргументов запроса, только чтение
52 завершает отправку ответа клиенту 50 завершает отправку ответа клиенту
53 </tag-desc> 51 </tag-desc>
54 52
55 <tag-name><literal>r.headersIn{}</literal></tag-name> 53 <tag-name><literal>r.headersIn{}</literal></tag-name>
56 <tag-desc> 54 <tag-desc>
57 объект исходящих заголовков, только чтение. 55 объект входящих заголовков, только чтение.
58 <para> 56 <para>
59 Например, доступ к заголовку <literal>Header-Name</literal> 57 Например, доступ к заголовку <literal>Foo</literal>
60 можно получить при помощи синтаксиса <literal>headers['Header-Name']</literal> 58 можно получить при помощи синтаксиса <literal>headersIn.foo</literal>
61 или <literal>headers.Header_name</literal> 59 или <literal>headersIn['Foo']</literal>
62 </para> 60 </para>
63 </tag-desc> 61 </tag-desc>
64 62
65 <tag-name><literal>r.headersOut{}</literal></tag-name> 63 <tag-name><literal>r.headersOut{}</literal></tag-name>
66 <tag-desc> 64 <tag-desc>
67 объект исходящих заголовков, доступно для записи. 65 объект исходящих заголовков, доступно для записи.
68 <para> 66 <para>
69 Например, доступ к заголовку <literal>Header-Name</literal> 67 Например, доступ к заголовку <literal>Foo</literal>
70 можно получить при помощи синтаксиса <literal>headers['Header-Name']</literal> 68 можно получить при помощи синтаксиса <literal>headersOut.foo</literal>
71 или <literal>headers.Header_name</literal> 69 или <literal>headersOut['Foo']</literal>
72 </para> 70 </para>
73 </tag-desc> 71 </tag-desc>
74 72
75 <tag-name><literal>r.httpVersion</literal></tag-name> 73 <tag-name><literal>r.httpVersion</literal></tag-name>
76 <tag-desc> 74 <tag-desc>
81 <tag-desc> 79 <tag-desc>
82 записывает <literal>строку</literal> в лог-файл ошибок 80 записывает <literal>строку</literal> в лог-файл ошибок
83 на уровне лога <literal>info</literal> 81 на уровне лога <literal>info</literal>
84 </tag-desc> 82 </tag-desc>
85 83
84 <tag-name id="r_internal_redirect"><literal>r.internalRedirect(<value>uri</value>)</literal></tag-name>
85 <tag-desc>
86 осуществляет внутреннее перенаправление на указанный <literal>uri</literal>.
87 Если uri начинается с префикса “<literal>@</literal>”,
88 то он считается именованным location.
89 </tag-desc>
90
86 <tag-name><literal>r.method</literal></tag-name> 91 <tag-name><literal>r.method</literal></tag-name>
87 <tag-desc> 92 <tag-desc>
88 HTTP метод, только чтение 93 HTTP метод, только чтение
89 </tag-desc> 94 </tag-desc>
90 95
96 <tag-name><literal>r.remoteAddress</literal></tag-name> 101 <tag-name><literal>r.remoteAddress</literal></tag-name>
97 <tag-desc> 102 <tag-desc>
98 адрес клиента, только чтение 103 адрес клиента, только чтение
99 </tag-desc> 104 </tag-desc>
100 105
101 <tag-name><literal>r.requestBody</literal></tag-name> 106 <tag-name id="r_request_body"><literal>r.requestBody</literal></tag-name>
102 <tag-desc> 107 <tag-desc>
103 хранит тело запроса, только чтение 108 возвращает тело запроса клиента, если оно не было
109 записано во временный файл.
110 Чтобы убедиться, что тело запроса клиента находится в памяти,
111 его размер должен быть ограничен
112 <link doc="../http/ngx_http_core_module.xml" id="client_max_body_size"/>,
113 и также необходимо установить достаточный размер буфера при помощи
114 <link doc="../http/ngx_http_core_module.xml" id="client_body_buffer_size"/>.
104 </tag-desc> 115 </tag-desc>
105 116
106 <tag-name><literal>r.responseBody</literal></tag-name> 117 <tag-name><literal>r.responseBody</literal></tag-name>
107 <tag-desc> 118 <tag-desc>
108 хранит тело ответа <link id="subrequest">подзапроса</link>, только чтение 119 хранит тело ответа <link id="subrequest">подзапроса</link>, только чтение.
120 Размер <literal>r.responseBody</literal> ограничивается директивой
121 <link doc="../http/ngx_http_core_module.xml" id="subrequest_output_buffer_size"/>.
109 </tag-desc> 122 </tag-desc>
110 123
111 <tag-name><literal>r.return(код[, строка])</literal></tag-name> 124 <tag-name><literal>r.return(код[, строка])</literal></tag-name>
112 <tag-desc> 125 <tag-desc>
113 отправляет 126 отправляет
124 отправляет часть тела ответа клиенту 137 отправляет часть тела ответа клиенту
125 </tag-desc> 138 </tag-desc>
126 139
127 <tag-name><literal>r.sendHeader()</literal></tag-name> 140 <tag-name><literal>r.sendHeader()</literal></tag-name>
128 <tag-desc> 141 <tag-desc>
129 отправляет заголовок HTTP клиенту 142 отправляет заголовки HTTP клиенту
130 </tag-desc> 143 </tag-desc>
131 144
132 <tag-name><literal>r.status</literal></tag-name> 145 <tag-name><literal>r.status</literal></tag-name>
133 <tag-desc> 146 <tag-desc>
134 статус, доступно для записи 147 статус, доступно для записи
135 </tag-desc> 148 </tag-desc>
136 149
137 <tag-name><literal>req.variables{}</literal></tag-name> 150 <tag-name><literal>r.variables{}</literal></tag-name>
138 <tag-desc> 151 <tag-desc>
139 объект переменных nginx, только чтение 152 объект переменных nginx, только чтение
140 </tag-desc> 153 </tag-desc>
141 154
142 <tag-name><literal>r.warn(<value>строка</value>)</literal></tag-name> 155 <tag-name><literal>r.warn(<value>строка</value>)</literal></tag-name>
152 165
153 <tag-name id="subrequest"><literal>r.subrequest(<value>uri</value>[, 166 <tag-name id="subrequest"><literal>r.subrequest(<value>uri</value>[,
154 <value>options</value>[, <value>callback</value>]])</literal></tag-name> 167 <value>options</value>[, <value>callback</value>]])</literal></tag-name>
155 <tag-desc> 168 <tag-desc>
156 создаёт подзапрос с заданными <literal>uri</literal> и 169 создаёт подзапрос с заданными <literal>uri</literal> и
157 <literal>options</literal> и 170 <literal>options</literal> и устанавливает
158 устанавливает необязательный <literal>callback</literal> завершения. 171 необязательный <literal>callback</literal> завершения.
159 172
160 <para> 173 <para>
161 Если <literal>options</literal> является строкой, то в ней 174 Если <literal>options</literal> является строкой, то в ней
162 содержится срока аргументов подзапроса. 175 содержится срока аргументов подзапроса.
163 В противном случае ожидается, что <literal>options</literal> является объектом 176 В противном случае ожидается, что <literal>options</literal> является
164 со следующими ключами: 177 объектом со следующими ключами:
165
166 <list type="tag"> 178 <list type="tag">
167 <tag-name><literal>args</literal></tag-name> 179 <tag-name><literal>args</literal></tag-name>
168 <tag-desc> 180 <tag-desc>
169 строка с аргументами 181 строка с аргументами
170 </tag-desc> 182 </tag-desc>
171
172 <tag-name><literal>body</literal></tag-name> 183 <tag-name><literal>body</literal></tag-name>
173 <tag-desc> 184 <tag-desc>
174 тело запроса 185 тело запроса
175 </tag-desc> 186 </tag-desc>
176 187
177 <tag-name><literal>method</literal></tag-name> 188 <tag-name><literal>method</literal></tag-name>
178 <tag-desc 189 <tag-desc>
179 >метод HTTP 190 метод HTTP
180 </tag-desc> 191 </tag-desc>
181 192
182 </list> 193 </list>
183 </para> 194 </para>
184 195
192 </list> 203 </list>
193 </para> 204 </para>
194 205
195 </section> 206 </section>
196 207
197 </section> 208
198 209 <section id="stream" name="Stream-сессия">
199 210
200 <section id="stream" name="Stream"> 211 <para>
201 212 Объект stream-сессии доступен только в
202 <para>
203 Объект <literal>stream</literal> доступен только в
204 модуле 213 модуле
205 <link doc="../stream/ngx_stream_js_module.xml">ngx_stream_js_module</link>. 214 <link doc="../stream/ngx_stream_js_module.xml">ngx_stream_js_module</link>.
206 Все строки в объекте <literal>stream</literal> являются 215 Все строки в объекте <literal>stream</literal> являются
207 <link id="strings">байтовыми строками</link>. 216 <link id="string">байтовыми строками</link>.
208 </para> 217 </para>
209 218
210 219 <para>
211 <section id="stream_session" name="Сессия"> 220 <note>
212 221 До версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>,
213 <para> 222 у объекта stream-сессии были некоторые свойства, которые на данный момент
214 <list type="tag"> 223 <link id="stream_obsolete">удалены</link>.
224 </note>
225 </para>
226
227 <para>
228 <list type="tag">
229
230 <tag-name id="s_allow"><literal>s.allow()</literal></tag-name>
231 <tag-desc>
232 успешно финализирует обработчик фазы
233 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>)
234 </tag-desc>
235
236 <tag-name id="s_decline"><literal>s.decline()</literal></tag-name>
237 <tag-desc>
238 финализирует обработчик фазы и передаёт контроль следующему обработчику
239 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>)
240 </tag-desc>
241
242 <tag-name id="s_deny"><literal>s.deny()</literal></tag-name>
243 <tag-desc>
244 финализирует обработчик фазы с кодом ошибки доступа
245 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>)
246 </tag-desc>
247
248 <tag-name id="s_done"><literal>s.done</literal>(<value>[код]</value>)</tag-name>
249 <tag-desc>
250 успешно финализирует текущий обработчик фазы
251 или финализирует его с указанным числовым кодом
252 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>).
253 </tag-desc>
254
255 <tag-name><literal>s.error(<value>строка</value>)</literal></tag-name>
256 <tag-desc>
257 записывает отправленную <literal>строку</literal> в лог-файл ошибок
258 на уровне лога <literal>error</literal>
259 </tag-desc>
260
261 <tag-name><literal>s.log(<value>строка</value>)</literal></tag-name>
262 <tag-desc>
263 записывает отправленную <value>строку</value> в лог-файл ошибок
264 на уровне лога <literal>info</literal>
265 </tag-desc>
266
267 <tag-name id="s_off"><literal>s.off(<value>имяСобытия</value>)</literal></tag-name>
268 <tag-desc>
269 отменяет регистрацию callback'а, установленного методом
270 <link id="s_on">s.on()</link>
271 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>)
272 </tag-desc>
273
274 <tag-name id="s_on"><literal>s.on(<value>событие</value>,
275 <value>callback</value>)</literal></tag-name>
276 <tag-desc>
277 регистрирует <literal>callback</literal> для указанного <literal>события</literal>
278 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>).
279
280 <para>
281 <literal>Событием</literal> может являться одна из следующих строк:
282 <list type="tag">
283 <tag-name><literal>upload</literal></tag-name>
284 <tag-desc>
285 новые данные от клиента
286 </tag-desc>
287
288 <tag-name><literal>download</literal></tag-name>
289 <tag-desc>
290 новые данные к клиенту
291 </tag-desc>
292
293 </list>
294 </para>
295
296 <para>
297 Callback завершения имеет следующий прототип:
298 <literal>callback(данные, флаги)</literal>, где
299 <literal>данные</literal> являются строкой,
300 <literal>флаги</literal> являются объектом
301 со следующими свойствами:
302 <list type="tag">
303 <tag-name id="s_on_callback_last"><literal>last</literal></tag-name>
304 <tag-desc>
305 логическое свойство,
306 true, если данные являются последним буфером.
307 </tag-desc>
308
309 </list>
310 </para>
311 </tag-desc>
215 312
216 <tag-name><literal>s.remoteAddress</literal></tag-name> 313 <tag-name><literal>s.remoteAddress</literal></tag-name>
217 <tag-desc> 314 <tag-desc>
218 адрес клиента, только чтение 315 адрес клиента, только чтение
316 </tag-desc>
317
318 <tag-name id="s_send"><literal>s.send(<value>данные</value>[,
319 <value>параметры</value>])</literal></tag-name>
320 <tag-desc>
321 отправляет данные клиенту
322 (<link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>).
323 <literal>Параметры</literal> являются объектом, используемым
324 для переопределения флагов буфера nginx,
325 полученных из буфера входных данных.
326 Флаги могут быть переопределены при помощи следующих флагов:
327 <para>
328 <list type="tag">
329
330 <tag-name><literal>last</literal></tag-name>
331 <tag-desc>
332 логическое свойство,
333 true, если буфер является последним буфером
334 </tag-desc>
335
336 <tag-name><literal>flush</literal></tag-name>
337 <tag-desc>
338 логическое свойство,
339 true, если буфер должен иметь флаг <literal>flush</literal>
340 </tag-desc>
341 </list>
342 </para>
343 Метод может быть вызван несколько раз в течение одного вызова callback'a.
344 </tag-desc>
345
346 <tag-name><literal>s.variables{}</literal></tag-name>
347 <tag-desc>
348 объект переменных nginx, только чтение
349 </tag-desc>
350
351 <tag-name><literal>s.warn(<value>строка</value>)</literal></tag-name>
352 <tag-desc>
353 записывает отправленную <literal>строку</literal> в лог-файл ошибок
354 на уровне лога <literal>warning</literal>
355 </tag-desc>
356
357 </list>
358 </para>
359
360 <section id="stream_obsolete" name="Устаревшие свойства">
361
362 <para>
363 Данные свойства были удалены
364 в njs версии <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
365 и не имеют обратной совместимости с существующим кодом njs.
366 </para>
367
368 <para>
369 <list type="tag">
370
371 <tag-name id="s_abort"><literal>s.ABORT</literal></tag-name>
372 <tag-desc>
373 код <literal>ABORT</literal>
374 <note>
375 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
376 необходимо использовать метод <link id="s_deny">s.deny()</link>.
377 </note>
378 </tag-desc>
379
380 <tag-name><literal>s.AGAIN</literal></tag-name>
381 <tag-desc>
382 код <literal>AGAIN</literal>
383 <note>
384 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
385 соответствующее поведение достигается, если не вызываются
386 <link id="s_allow">s.allow()</link>,
387 <link id="s_deny">s.deny()</link>,
388 <link id="s_decline">s.decline()</link>,
389 <link id="s_done">s.done()</link>
390 и callback зарегистрирован.
391 </note>
392 </tag-desc>
393
394 <tag-name id="s_buffer"><literal>s.buffer</literal></tag-name>
395 <tag-desc>
396 текущий буфер, доступен для записи
397 <note>
398 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
399 для записи необходимо использовать метод <link id="s_send">s.send()</link>.
400 Для чтения текущий буфер доступен в качестве первого аргумента
401 callback'а <literal>event</literal>.
402 </note>
403 </tag-desc>
404
405 <tag-name><literal>s.DECLINED</literal></tag-name>
406 <tag-desc>
407 код <literal>DECLINED</literal>
408 <note>
409 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
410 необходимо использовать метод <link id="s_decline">s.decline()</link>.
411 </note>
219 </tag-desc> 412 </tag-desc>
220 413
221 <tag-name><literal>s.eof</literal></tag-name> 414 <tag-name><literal>s.eof</literal></tag-name>
222 <tag-desc> 415 <tag-desc>
223 логическое свойство, 416 логическое свойство,
224 true, если текущий буфер является последним буфером, 417 true, если текущий буфер является последним буфером,
225 только чтение 418 только чтение
419 <note>
420 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
421 необходимо использовать свойство <link id="s_on_callback_last">flags.last</link>.
422 </note>
423 </tag-desc>
424
425 <tag-name><literal>s.ERROR</literal></tag-name>
426 <tag-desc>
427 код <literal>ERROR</literal>
428 <note>
429 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
430 для сообщения об ошибке используется соответствующее исключение.
431 </note>
226 </tag-desc> 432 </tag-desc>
227 433
228 <tag-name><literal>s.fromUpstream</literal></tag-name> 434 <tag-name><literal>s.fromUpstream</literal></tag-name>
229 <tag-desc> 435 <tag-desc>
230 логическое свойство, 436 логическое свойство,
231 true, если текущий буфер является буфером от проксируемого сервера к клиенту, 437 true, если текущий буфер является буфером от проксируемого сервера к клиенту,
232 только чтение 438 только чтение
233 </tag-desc> 439 <note>
234 440 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
235 <tag-name><literal>s.buffer</literal></tag-name> 441 необходимо использовать
236 <tag-desc> 442 соответствующее <link id="s_on">событие</link>
237 текущий буфер, доступен для записи 443 (<literal>upload</literal> или <literal>download</literal>)
238 </tag-desc> 444 для обработки данных к клиенту или от клиента.
239 445 </note>
240 <tag-name><literal>s.variables{}</literal></tag-name> 446 </tag-desc>
241 <tag-desc> 447
242 объект переменных nginx, только чтение 448 <tag-name id="s_ok"><literal>s.OK</literal></tag-name>
243 </tag-desc>
244
245 <tag-name><literal>s.OK</literal></tag-name>
246 <tag-desc> 449 <tag-desc>
247 код <literal>OK</literal> 450 код <literal>OK</literal>
248 </tag-desc> 451 <note>
249 452 Начиная с версии njs <link doc="../njs/changes.xml" id="njs0.2.4">0.2.4</link>
250 <tag-name><literal>s.DECLINED</literal></tag-name> 453 необходимо использовать метод <link id="s_allow">s.allow()</link>.
251 <tag-desc> 454 </note>
252 код <literal>DECLINED</literal>
253 </tag-desc>
254
255 <tag-name><literal>s.AGAIN</literal></tag-name>
256 <tag-desc>
257 код <literal>AGAIN</literal>
258 </tag-desc>
259
260 <tag-name><literal>s.ERROR</literal></tag-name>
261 <tag-desc>
262 код <literal>ERROR</literal>
263 </tag-desc>
264
265 <tag-name><literal>s.ABORT</literal></tag-name>
266 <tag-desc>
267 код <literal>ABORT</literal>
268 </tag-desc>
269
270 <tag-name><literal>s.log(<value>строка</value>)</literal></tag-name>
271 <tag-desc>
272 записывает отправленную <value>строку</value> в лог-файл ошибок
273 на уровне лога <literal>info</literal>
274 </tag-desc>
275
276 <tag-name><literal>s.warn(<value>строка</value>)</literal></tag-name>
277 <tag-desc>
278 записывает отправленную <literal>строку</literal> в лог-файл ошибок
279 на уровне лога <literal>warning</literal>
280 </tag-desc>
281
282 <tag-name><literal>s.error(<value>строка</value>)</literal></tag-name>
283 <tag-desc>
284 записывает отправленную <literal>строку</literal> в лог-файл ошибок
285 на уровне лога <literal>error</literal>
286 </tag-desc> 455 </tag-desc>
287 456
288 </list> 457 </list>
289 </para> 458 </para>
290 459
291 </section> 460 </section>
292 461
293 </section> 462 </section>
294 463
464 </section>
465
295 </article> 466 </article>
296 467