comparison xml/ru/docs/njs/examples.xml @ 2483:b60e5be733cd

Added Example of promisified requests to njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 21 Jan 2020 16:37:54 +0000
parents 253641e268a8
children ba9bfd064a61
comparison
equal deleted inserted replaced
2482:9bf87153b1b3 2483:b60e5be733cd
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> 7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8 8
9 <article name="Примеры использования" 9 <article name="Примеры использования"
10 link="/ru/docs/njs/examples.html" 10 link="/ru/docs/njs/examples.html"
11 lang="ru" 11 lang="ru"
12 rev="7"> 12 rev="8">
13 13
14 <section id="helloword" name="Hello World"> 14 <section id="helloword" name="Hello World">
15 15
16 <para> 16 <para>
17 <path>nginx.conf</path>: 17 <path>nginx.conf</path>:
351 </note> 351 </note>
352 </para> 352 </para>
353 353
354 </section> 354 </section>
355 355
356
357 <section id="promisified_subrequest" name="Подзапрос с promise">
358
359 <para>
360 Пример работает начиная с версии
361 <link doc="changes.xml" id="njs0.3.8">0.3.8</link>.
362 <path>nginx.conf</path>:
363 <example>
364 js_include promisified_subrequest.js;
365
366 location /start {
367 js_content content;
368 }
369
370 location /auth {
371 proxy_pass http://auth_backend;
372 }
373
374 location /backend {
375 proxy_pass http://backend;
376 }
377 </example>
378 </para>
379
380 <para>
381 <path>promisified_subrequest.js</path>:
382 <example>
383 function content(r) {
384 r.subrequest(r, '/auth')
385 .then(reply => JSON.parse(reply.responseBody))
386 .then(response => {
387 if (!response['token']) {
388 throw new Error("token is not available");
389 }
390 return token;
391 })
392 .then(token => {
393 r.subrequest('/backend', `token=${token}`)
394 .then(reply => r.return(reply.status, reply.responseBody));
395 })
396 .catch(_ => r.return(500));
397 }
398 </example>
399 </para>
400
401 </section>
402
356 </article> 403 </article>