Перевод статьи подготовлен в преддверии старта курса Node.js Developer  Koa - это небольшой фреймворк, позволяющий создавать бэкэнд-приложения, работающие на платформе Node.js. В этой статье мы рассмотрим, как отправлять различные типы ответов с помощью Koa. Для отправки тела ответа можно установить атрибут тела ctx . Например, мы можем отправить тело ответа следующим образом: В приведенном выше коде мы устанавливаем свойство ctx.body в 'foo' . Таким образом, это то, что мы получим, когда перейдем по адресу / с помощью нашего браузера или сделаем запрос на него с помощью HTTP-клиента. Мы можем отправлять ответы в нашем коде Koa, установив свойство ctx.response. Для установки заголовка мы можем установить заголовок ответа методом ctx.set. Например, мы можем использовать его следующим образом: В вышеприведенном коде мы вызываем ctx.set для установки различных заголовков, включая заголовоки: Access-Control-Allow-Origin, Access-Control-Allow-Headers и Access-Control-Allow-Methods. Как только мы сделаем запрос по адресу / , мы увидим эти заголовки в HTTP клиентах, таких как Chrome или Postman. Мы можем посылать коды статуса ответа, установив значение кода статуса в свойство respondbse.status. Например, это можно сделать следующим образом: В коде выше мы установили значение ctx.status 's равным 202. Таким образом, когда мы сделаем запрос по адресу / , мы получим код состояния 202 из запроса. Некоторые распространенные коды ответа, которые отправляются, включают в себя: 200 - OK 201 - 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- таймаут шлюза Мы можем установить свойство ctx.response.lastModified на нужную нам дату. Например, мы можем установить его следующим образом: В приведенном выше коде мы устанавливаем свойство lastModified на 1 января 2020 года, поэтому, когда мы сделаем запрос по адресу /, мы получим Last-Modified из ответа со значением Wed, 01 января 2020 года 00:00:00 GMT . Мы можем установить заголовок Content-Type, задав свойство ctx.type. Например, это можно сделать следующим образом: В приведенном выше коде мы имеем следующую строчку: Чтобы установить заголовок Content-Type в 'text/plain; charset=utf-8' . Затем мы увидим это в качестве значения заголовка Content-Type при выполнении запроса по адресу / . Чтобы добавить еще один заголовок к ответу, мы можем вызвать метод ctx.append() для добавления новых заголовков. Он принимает ключ и значение в качестве своих 2 аргументов. Например, мы можем использовать его следующим образом: В приведенном выше коде мы вызвали метод ctx.append() с ключом заголовка 'a' и соответствующим ему значением 1. Затем, когда мы сделаем запрос по адресу /, то получим заголовок ответа A со значением 1. Мы можем установить заголовки ответов, вызвав метод ctx.append(). Чтобы вернуть тело ответа, мы можем установить свойство ctx.body со значением. Для установки кода статуса ответа, мы устанавливаем свойство ctx.status. Записаться на бесплатный урок  Редактор