使用 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 语法、模块和中间件……
相关文章
使用 NodeJS 检查 MongoDB 中是否存在集合
发布时间:2023/04/21 浏览次数:194 分类:MongoDB
-
在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。
忽略 Node_modules 文件夹
发布时间:2023/04/06 浏览次数:110 分类:Git
-
在处理项目时,你可能不希望 git 跟踪某些文件夹;这些可以是 .env 文件、node_modules 文件夹等。
Node.js 中的 HTTP 发送 POST 请求
发布时间:2023/03/27 浏览次数:187 分类:Node.js
-
在本文中,我们将学习如何使用 Node.js 使用第三方包发出发送 post 请求。