在 KoaJS 中创建路由

了解如何使用 KoaJS 路由参数创建动态路由

在 KoaJS 中创建路由


KoaJS 是一个最小化和灵活的 NodeJS web 应用框架。它为构建 Web 和移动应用程序提供了一组很好的特性。在本文中,我们将通过创建一个小型应用程序来开始使用 KoaJS。

KoaJS 是一个开源框架,由非常流行的 ExpressJS 的创建者开发和维护。

然而,KoaJS 背后的设计理念与 Express 完全不同。Koa 提供了构建应用程序的最小接口。它是一个非常小的框架,提供了最基本的工具来构建应用程序和 REST API

路由是构建任何 Web 应用程序的重要方面。但是,KoaJS 不支持路由作为核心模块的一部分。因此,我们必须使用外部模块来启用路由。在本文中,我们将研究一个使用 Koa-Router 包的基本 Koa JS 路由器示例。

虽然静态路由可以解决大量的用例,但是应用程序也需要动态路由。动态路由帮助我们传递参数作为路由路径的一部分。在这篇文章中,我们还将学习如何使用示例处理 KoaJS 路由参数。

1-安装 KoaJS 软件包

KoaJS 需要 Node 版本7或更高版本,这使它能够与 ES2015和异步函数支持一起工作。

要开始使用 KoaJS,我们可以简单地创建一个项目文件夹并执行以下命令

Shell

$ mkdir koa-app
$ cd koa-app
$ npm init -y
$ npm install --save koa

基本上,我们创建一个目录并初始化一个 npm 项目。

现在我们的项目已经准备就绪,我们可以创建第一个 KoaJS 应用程序了。

请看下面的例子:

JavaScript

const koa = require('koa');
const app = new koa();

app.use(async ctx => {
   ctx.body = 'Hello, World';
});

app.listen(3000, function(){
   console.log('Server running on https://localhost:3000')
});


KoaJS 应用程序是一个包含中间件函数数组的对象。根据请求,这些中间件函数以类似堆栈的方式组合和执行。

如您所见,我们有 app.use ()函数。基本上,这个函数是一个中间件。这个函数接受一个回调函数作为输入。此外,回调函数可以访问名为 ctx 的 Koa 应用程序上下文。基本上,我们可以使用这个上下文来访问和修改请求和响应对象。

一旦我们使用 node index.js 启动应用程序并访问 http://localhost:3000,我们将能够在浏览器中看到问候消息。

然而,与 ExpressJS 不同,Koa 没有内置的路由器处理能力。

假设您已经有了一个 KoaJS 应用程序,我们只需要安装另一个软件包就可以使用路由器了。

Shell

$ npm install koa-router

一旦软件包安装完成,我们就准备调整我们的应用程序以使用 koa-router 软件包。

2-实现一个 KoaJS 路由器示例

让我们实现一个简单的 GET 路由示例

JavaScript

const koa = require('koa');
const Router = require('koa-router');

const app = new koa();
const router = new Router();

router.get('/greetings', (ctx, next) => {
ctx.body = "Hello, World from Router"
});

app.use(router.routes())

app.listen(3000, function(){
console.log('Server running on https://localhost:3000')
});


让我们了解一下上面的例子中发生了什么。

  • 我们首先进口必要的包。这包括koa and 还有koa-router.
  • 接下来,我们创建一个Koa application instance Koa 应用程序实例 使用构造函数和关键词
  • 此外,我们还创建了koa-router.
  • 现在,我们可以将路由定义附加到路由器实例router.get() . 这个函数将路由路径作为输入,并使用一个包含 Koa 应用程序上下文的回调函数
  • 在回调中,我们将响应正文设置为所需的问候消息
  • 继续,我们使用app.use() 将路由定义附加到 KoaJS 中间件堆栈
  • 终于,我们使用app.listen() . 在端口3000上启动应用程序

请注意,Koa Context 是一个特殊的对象,它将 NodeJS 的请求和响应对象封装到一个对象中。在 KoaJS 中,为每个请求创建一个上下文实例,并在中间件中作为接收方或 ctx 标识符引用。

如果我们此时启动应用程序并访问 http://localhost:3000/greetings ,我们将能够在浏览器中看到问候信息。

3-处理 KoaJS 路线参数

让我们创建一个简单的示例,演示 KoaJS 中的路由参数。

JavaScript

const koa = require('koa');
const Router = require('koa-router');

const app = new koa();
const router = new Router();

router.get('/books/:id', (ctx, next) => {
  ctx.body = 'Book requested for id: ' + ctx.params.id
});

app.use(router.routes())

app.listen(3000, function(){
   console.log('Server running on https://localhost:3000')
});


如您所见,我们在 router.get ()函数的路径中添加了: id。路由器功能是 KoaJS 路由器包的一部分。

基本上,: id 是路由参数的占位符。一旦我们定义了路由参数,我们就可以从 ctx.params 对象中检索参数的值。

如果我们启动上面的应用程序并访问 http://localhost:3000/books/5,我们得到的输出消息是“ Book request for id: 5”。

我们还可以在 id 字段中发送任何其他类型的值(比如字符串) ,甚至在 ctx.params 中也可以使用。

最后,在 KoaJS 中也可能有多个路由参数。

JavaScript

const koa = require('koa');
const Router = require('koa-router');

const app = new koa();
const router = new Router();

router.get('/books/:id', (ctx, next) => {
  ctx.body = 'Book requested for id: ' + ctx.params.id
});

router.get('/books/:bookId/author/:authorId', (ctx, next) => {
  ctx.body = {bookId: ctx.params.bookId, authorId: ctx.params.authorId}
});

app.use(router.routes())

app.listen(3000, function(){
   console.log('Server running on https://localhost:3000')
});

例如,这里的第二个路由包含两个参数-bookId 和 authId。我们可以从 ctx.params 对象中检索这两个对象。

带有路线参数的4-模式匹配

我们还可以使用正则表达式来限制 URL 参数匹配。

例如,如果我们的要求是 bookId 应该只有3位长的数字,我们可以使用 regex 如下:

JavaScript

router.get('/books/:id([0-9]{3})', (ctx, next) => {
  ctx.body = 'Book requested for id: ' + ctx.params.id
});

请注意,这只有在 id 为3位数字时才会匹配。少于或多于此值都将导致 HTTP404错误代码。我们还可以使用不同的 HTTP 方法在 KoaJS 中构建复杂的 REST API。

结论

这样,我们就成功地研究了 KoaJS 路由参数以及如何在我们的应用程序中处理它们。

基本上,路由参数使我们的应用程序路由动态和灵活。此外,我们可以在路由中使用多个参数,也可以使用 regex 执行模式匹配。

如果你对这篇文章有任何评论或疑问,请随时在下面的评论部分提及。



发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章