[JavaScript, Node.JS] Отправка ответа с Коа (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 4 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
04-Дек-2020 21:30
Перевод статьи подготовлен в преддверии старта курса Node.js Developer.
Koa - это небольшой фреймворк, позволяющий создавать бэкэнд-приложения, работающие на платформе Node.js.В этой статье мы рассмотрим, как отправлять различные типы ответов с помощью Koa.Отправка тела (Body)Для отправки тела ответа можно установить атрибут тела ctx . Например, мы можем отправить тело ответа следующим образом:
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.body = 'foo';
});
app.listen(3000);
В приведенном выше коде мы устанавливаем свойство ctx.body в 'foo' . Таким образом, это то, что мы получим, когда перейдем по адресу / с помощью нашего браузера или сделаем запрос на него с помощью HTTP-клиента.Заголовок (Header) отправки ответаМы можем отправлять ответы в нашем коде Koa, установив свойство ctx.response.Для установки заголовка мы можем установить заголовок ответа методом ctx.set.Например, мы можем использовать его следующим образом:
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.set('Access-Control-Allow-Origin', '*');
  ctx.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  ctx.set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
  ctx.body = 'hello';
});
app.listen(3000);
В вышеприведенном коде мы вызываем ctx.set для установки различных заголовков, включая заголовоки: Access-Control-Allow-Origin, Access-Control-Allow-Headers и Access-Control-Allow-Methods.Как только мы сделаем запрос по адресу / , мы увидим эти заголовки в HTTP клиентах, таких как Chrome или Postman.Код статуса ответа на отправкуМы можем посылать коды статуса ответа, установив значение кода статуса в свойство respondbse.status.Например, это можно сделать следующим образом:
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.status = 202;
  ctx.body = 'accepted';
});
app.listen(3000);
В коде выше мы установили значение ctx.status 's равным 202. Таким образом, когда мы сделаем запрос по адресу / , мы получим код состояния 202 из запроса.Некоторые распространенные коды ответа, которые отправляются, включают в себя:200 - OK201 - created - создан202 - accepted - принято203 - non-authoritative information- неавторитетная информация204 -  no content- нет содержания301 - moved permanently - перемещено навсегда302 - found - найдено303 - see other - см. прочее307 - temporary redirect - временная переадресация308 - permanent redirect - постоянная переадресация400 -  bad request - неверный запрос401 -  unauthorized - не аутентифицированный запрос403 - forbidden- неавторизованный запрос404 - not found - не найдено405 - method not allowed- способ не разрешён406 - not acceptable- неприемлемо422 - unprocessable entity - необрабатываемая сущность500 - internal server error- внутреннего ошибка сервера501 - not implemented- не реализован502 - bad gateway- неверный шлюз504 - gateway timeout- таймаут шлюзаОтправка заголовков (Headers)Мы можем установить свойство ctx.response.lastModified на нужную нам дату.Например, мы можем установить его следующим образом:
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.response.lastModified = new Date(2020, 0, 1);
  ctx.body = 'foo';
});
app.listen(3000);
В приведенном выше коде мы устанавливаем свойство lastModified на 1 января 2020 года, поэтому, когда мы сделаем запрос по адресу /, мы получим Last-Modified из ответа со значением Wed, 01 января 2020 года 00:00:00 GMT .Мы можем установить заголовок Content-Type, задав свойство ctx.type. Например, это можно сделать следующим образом:
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.type = 'text/plain; charset=utf-8';
  ctx.body = 'foo';
});
app.listen(3000);
В приведенном выше коде мы имеем следующую строчку:
ctx.type = 'text/plain; charset=utf-8';
Чтобы установить заголовок Content-Type в 'text/plain; charset=utf-8' . Затем мы увидим это в качестве значения заголовка Content-Type при выполнении запроса по адресу / .Чтобы добавить еще один заголовок к ответу, мы можем вызвать метод ctx.append() для добавления новых заголовков. Он принимает ключ и значение в качестве своих 2 аргументов.Например, мы можем использовать его следующим образом:
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.append('a', 1);
  ctx.body = 'foo';
});
app.listen(3000);
В приведенном выше коде мы вызвали метод ctx.append() с ключом заголовка 'a' и соответствующим ему значением 1.Затем, когда мы сделаем запрос по адресу /, то получим заголовок ответа A со значением 1.ЗаключениеМы можем установить заголовки ответов, вызвав метод ctx.append(). Чтобы вернуть тело ответа, мы можем установить свойство ctx.body со значением.Для установки кода статуса ответа, мы устанавливаем свойство ctx.status.
===========
Источник:
habr.com
===========

===========
Автор оригинала: John Au-Yeung
===========
Похожие новости: Теги для поиска: #_javascript, #_node.js, #_java, #_node, #_webdevelopment, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
)
, #_javascript, #_node.js
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 02-Июл 13:06
Часовой пояс: UTC + 5