Koa - это веб-фреймворк для Node.js. С выпуском KOA 2.0 теперь мы можем использовать асинхронные функции ES2017 для выражения нашего промежуточного программного обеспечения с помощью KOA. KOA не поставляется в комплекте с каким-либо промежуточным программным обеспечением, но довольно много пакетов доступно в npm.
Требования
У нас должна быть версия узла 7.6.0 или выше. Вы можете использовать диспетчер версий узлов n
, чтобы обновить узел до версии, подходящей для KOA.
$ n 7.6.0
Установка
Во-первых, давайте создадим каталог для проекта.
$ mkdir testApp
Затем давайте инициализируем этот проект package.json
файлом, запустив
$ cd testApp $ npm init
Мы можем установить KOA с помощью диспетчера пакетов узлов. Мы также будем использовать пакеты промежуточного слоя koa-mount
и koa-router
.
$ npm install koa koa-mount koa-router --save
Состав
Далее давайте создадим следующую структуру проекта
testApp |______router | |______car.js |______server.js |______package.json
Сервер
В файле server.js нам сначала потребуются пакеты.
const Koa = require('koa'); const router = require('koa-router')(); const mount = require('koa-mount');
Затем нам нужно создать экземпляр объекта Koa, а затем смонтировать файлы нашего маршрутизатора.
const app = new Koa(); app.use(mount(require('./router/car.js')));
Затем нам нужно прослушать порт для запуска приложения.
if(require.main === module) { app.listen(3000); // default }
Собрав их все вместе, наш файл server.js будет выглядеть так.
// require packages const Koa = require('koa'); const router = require('koa-router')(); const mount = require('koa-mount'); // create an instance of the Koa object const app = new Koa(); // mount the route app.use(mount(require('./router/car.js'))); app.use(router.routes()); // route middleware if(require.main === module) { app.listen(3000); // default }
Маршруты
В каталоге маршрутов давайте создадим конечные точки нашего API. Мы можем сделать это, создав еще один объект KOA и экспортировав его как мини-сервер.
В car.js
const Koa = require('koa'); const router = require('koa-router')(); const app = new Koa(); // a simple car object that we can serve const car = { make: 'Honda' year: '2012' model: 'Civic' };
Затем давайте создадим конечную точку, которая может обслуживать наш объект car для запроса GET.
router.get('/car', async (ctx, next) => { ctx.body = car; await next(); });
Затем нам нужно экспортировать наш мини-сервер, чтобы он мог работать на порту 3000.
Наши файлы car.j будут выглядеть так:
const Koa = require('koa'); const router = require('koa-router')(); const app = new Koa(); // a simple car object that we can serve const car = { make: 'Honda' year: '2012' model: 'Civic' }; // Route to handle GET request router.get('/car', async (ctx, next) => { ctx.body = car; await next(); }); app.use(router.routes()); // route middleware module.exports = app;
Вот и все!!
Таким образом, с помощью KOA 2.0 мы сможем сохранить наш backend API организованным и простым.
Источники: