[JavaScript, Node.JS] Отправка ответа с Коа (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Перевод статьи подготовлен в преддверии старта курса 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
===========Похожие новости:
- [Программирование] Введение в Spring Data JDBC (перевод)
- [Java, Scala, Big Data] Практические методы оптимизации запросов в Apache Spark
- [Программирование, Разработка игр, Unity] Реактивное программирование для разработчиков игр: Введение (перевод)
- [Высокая производительность, Серверное администрирование] Как Netflix поддерживает надежность сервиса: ограничение нагрузки на основе приоритетов (перевод)
- [Разработка веб-сайтов, JavaScript, Программирование] Сниппет, расширение для VSCode и CLI. Часть 1
- [Java, IT-инфраструктура] Как реализовать интеграцию с ЕСИА на Java без лишних проблем
- [Разработка веб-сайтов, JavaScript, Accessibility] Безжалостное избавление от Layout Shift на netlify.com (перевод)
- [Open source, Виртуализация, Облачные вычисления, Openshift] Подборка бесплатных книг по OpenShift, 4 преимущества стандартизованной операционной среды SOE и цифровая трансформация
- [Венчурные инвестиции, Управление продуктом, Карьера в IT-индустрии, Финансы в IT, IT-компании] Программист против менеджера: обсуждение первого сезона Кремниевой долины
- [Разработка веб-сайтов, JavaScript] JavaScript исполняется 25 лет: краткая история языка и скидка 50% на WebStorm
Теги для поиска: #_javascript, #_node.js, #_java, #_node, #_webdevelopment, #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
), #_javascript, #_node.js
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:13
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Перевод статьи подготовлен в преддверии старта курса Node.js Developer.
const Koa = require('koa');
const app = new Koa(); app.use(async (ctx, next) => { ctx.body = 'foo'; }); app.listen(3000); 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); const Koa = require('koa');
const app = new Koa(); app.use(async (ctx, next) => { ctx.status = 202; ctx.body = 'accepted'; }); app.listen(3000); 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); 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';
const Koa = require('koa');
const app = new Koa(); app.use(async (ctx, next) => { ctx.append('a', 1); ctx.body = 'foo'; }); app.listen(3000); =========== Источник: habr.com =========== =========== Автор оригинала: John Au-Yeung ===========Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_javascript, #_node.js |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:13
Часовой пояс: UTC + 5