使用 Koa、Yarn Workspaces 和 Objection.js 创建 Node.JS API

我是一名全栈开发人员,使用 Laravel 的魔力在极短的时间内为我的客户展示最好的东西。 我确实更喜欢使用框架来节省开发时间,并确保我所做的一切都能让我更有效率,并给我很多时间来拖延。

但最近,由于客户的可扩展性要求,我不得不使用 Node JS 构建东西。

现在是选择框架的时候了,我对此提出了三个要求:

  • 应用程序必须像 Laravel 一样神奇
  • 应用程序必须使用 MySQL
  • 认证必须像奶酪一样光滑流畅

我本可以选择出色的 Adonis.js(受 Laravel 启发),但客户还有另一个要求:应用程序必须可扩展并拆分为微小的微服务。 因此,我不得不走不同的道路。

好吧,我选择了以下规范以使我的工作更轻松(就像在 laravel 中一样):

  • 语言:Node.JS(当然)
  • 框架:Koa JS(建立在 Express 之上,具有一些特殊功能)
  • ORM:Objection.js(经过几次 google 搜索、与 sequelize 的语法比较等和 reddit 意见后选择)
  • 数据库:MySQL

让我们开始安装

# 建一个新文件夹并键入以下内容:
$ yarn init
$ yarn add koa koa-router koa-jwt koa-body @koa/cors objection knex mysql mysql2
$ yarn start

不是一种好的教学方式,但必须尽快完成(我稍后将它们分开)。 以下是关于上述所有内容的简介:

  • Koa:具有更好错误处理能力的异步轻量级 NodeJS 框架
  • Koa-router:处理路由(对服务器的请求)
  • Koa-JWT:使用 JSON Web Tokens 对用户进行身份验证
  • Koa-Body: 解析 POST 请求体
  • @koa/cors:允许不同的来源(避免 Preflight Request Failed 或 CORS )
  • Objection:有助于轻松创建数据库查询的 ORM(Knex 支持 Objection)
  • MySQL/MySQL2:MySQL 驱动程序

现在让我们创建入口文件

index.js

//导入我们安装的所有包
const koa = require("koa");
const router = require("koa-router")();
const jwt = require("koa-jwt");
const koaBody = require("koa-body");
const cors = require("@koa/cors");
const Knex = require("knex");
const knexConfig = require("./config/knexfile");
//Initialize Your App
var app = new koa();
/* CORS :: 必须避免 CORS 错误 */
var corsOptions = {
origin: "*",
};
app.use(cors(corsOptions));
//Importing Objection.js (ORM)
const {
Model,ForeignKeyViolationError,ValidationError} = require("objection");
const knex = Knex(knexConfig.development);
Model.knex(knex);
app.use(koaBody()); //Body Parser
api.use(router.routes());

// 创建我们的第一个路由
router.get('/', (ctx)=>{ctx.body='It`s Working';}
/* Listener:: Your App Listens on this port */
app.listen(3000);

我们使用箭头函数创建从 http://localhost:3000 返回“It’s Working”的路由/

参数 ctx 是一个上下文,一个提供一系列属性的对象,如请求、响应正文、标头等(想象一个服务员带着食物和账单回来,然后带着钱和小费回来)。 我们将响应正文更改为使用 ctx.body 来表示“It’s Working”。

后续会继续介绍 Objection.js 语法、模块和中间件……

免责声明:
1.本站所有内容由本站原创、网络转载、消息撰写、网友投稿等几部分组成。
2.本站原创文字内容若未经特别声明,则遵循协议CC3.0共享协议,转载请务必注明原文链接。
3.本站部分来源于网络转载的文章信息是出于传递更多信息之目的,不意味着赞同其观点。
4.本站所有源码与软件均为原作者提供,仅供学习和研究使用。
5.如您对本网站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。
火焰兔 » 使用 Koa、Yarn Workspaces 和 Objection.js 创建 Node.JS API