项目地址:https://github.com/caochangkui/demo/tree/koa-test

1. 创建项目

  1. 创建目录 koa-test
  2. npm init 创建 package.json,然后执行 npm install
  3. 通过 npm install koa 安装 koa 模块
  4. 通过 npm install supervisor 安装supervisor模块, 用于node热启动
  5. 在根目录下中新建 koa.js 文件,作为入口文件, 内容如下:
  1. const Koa = require('koa'); // Koa 为一个class
  2. const app = new Koa();
  3. app.use(async (ctx, next) => {
  4. await next();
  5. ctx.response.body = 'Hello, koa2!';
  6. });
  7. app.listen(3333, () => {
  8. console.log('This server is running at http://localhost:' + 3333)
  9. })
  1. 配置 package.json 文件
  1. {
  2. "name": "koa-test",
  3. "version": "1.0.0",
  4. "description": "",
  5. "main": "koa.js",
  6. "scripts": {
  7. "test": "echo \"Error: no test specified\" && exit 1",
  8. "serve": "supervisor koa.js"
  9. },
  10. "author": "",
  11. "license": "ISC",
  12. "dependencies": {
  13. "koa": "^2.7.0",
  14. "supervisor": "^0.12.0"
  15. }
  16. }
  1. 启动项目, 打开 http://localhost:3333 即可
  1. $ npm run serve

打开页面后,显示 hello koa2

2. 根据请求路径显示不同页面

更改 koa.js

  1. const Koa = require('koa'); // Koa 为一个class
  2. const app = new Koa();
  3. app.use(async (ctx, next) => {
  4. await next();
  5. if (ctx.request.path == '/about') {
  6. ctx.response.type = 'html'; // 指定返回类型为 html 类型
  7. ctx.response.body = 'this is about page <a href="/">Go Index Page</a>';
  8. } else {
  9. ctx.response.body = 'this is index page';
  10. }
  11. });
  12. app.listen(3333, () => {
  13. console.log('This server is running at http://localhost:' + 3333)
  14. })

访问:http://localhost:3333/about 显示:this is about page Go Index Page

3. koa-router 路由管理模块的使用

koa-router 是一个处理路由的中间件

  1. $ npm i koa-router

修改koa.js

  1. const Koa = require('koa'); // Koa 为一个class
  2. const Router = require('koa-router') // koa 路由中间件
  3. const app = new Koa();
  4. const router = new Router(); // 实例化路由
  5. // 添加url
  6. router.get('/hello/:name', async (ctx, next) => {
  7. var name = ctx.params.name; // 获取请求参数
  8. ctx.response.body = `<h5>Hello, ${name}!</h5>`;
  9. });
  10. router.get('/', async (ctx, next) => {
  11. ctx.response.body = '<h5>Index</h5>';
  12. });
  13. app.use(router.routes());
  14. app.listen(3333, () => {
  15. console.log('This server is running at http://localhost:' + 3333)
  16. })

也可给路由统一加个前缀:

  1. const router = new Router({
  2. prefix: '/api'
  3. });

然后访问 http://localhost:3333/api 即可,例如:http://localhost:3333/api/hello/koa2

4. post 请求

koa2 需要使用 koa-bodyparser 中间件来处理post请求

  1. $ npm i koa-bodyparser

修改 koa.js

  1. const Koa = require('koa'); // Koa 为一个class
  2. const Router = require('koa-router') // koa 路由中间件
  3. const bodyParser = require('koa-bodyparser'); // 处理post请求,把 koa2 上下文的表单数据解析到 ctx.request.body 中
  4. const app = new Koa();
  5. const router = new Router(); // 实例化路由
  6. app.use(bodyParser())
  7. // 表单
  8. router.get('/', async (ctx, next) => {
  9. ctx.response.body = `<h1>表单</h1>
  10. <form action="/login" method="post">
  11. <p>Name: <input name="name" value="koa2"></p>
  12. <p>Password: <input name="password" type="password"></p>
  13. <p><input type="submit" value="Submit"></p>
  14. </form>`;
  15. });
  16. router.post('/login', async (ctx, next) => {
  17. let name = ctx.request.body.name;
  18. let password = ctx.request.body.password;
  19. console.log(name, password);
  20. ctx.response.body = `<h4>Hello, ${name}!</h4>`;
  21. });
  22. app.use(router.routes());
  23. app.listen(3333, () => {
  24. console.log('This server is running at http://localhost:' + 3333)
  25. })

参考: https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001471087582981d6c0ea265bf241b59a04fa6f61d767f6000

koa2入门(2) koa-router 路由处理的更多相关文章

  1. koa2入门--03.koa中间件以及中间件执行流程

    //中间件:先访问app的中间件的执行顺序类似嵌套函数,由外到内,再由内到外 //应用级中间件 const koa = require('koa'); var router = require('ko ...

  2. KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情

    koa-router Router middleware for koa. Provides RESTful resource routing. koa-router       Router mid ...

  3. koa2入门--02.koa2路由

    首先输入在项目文件下使用cmd,输入 npm install koa-router --save const koa = require('koa');//引入koa const Router = r ...

  4. Angular 从入坑到挖坑 - Router 路由使用入门指北

    一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...

  5. koa2入门使用总结

    koa2的介绍 Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 async ...

  6. 手写@koa/router源码

    上一篇文章我们讲了Koa的基本架构,可以看到Koa的基本架构只有中间件内核,并没有其他功能,路由功能也没有.要实现路由功能我们必须引入第三方中间件,本文要讲的路由中间件是@koa/router,这个中 ...

  7. 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI

    一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...

  8. 全面解析JavaScript的Backbone.js框架中的Router路由

    这篇文章主要介绍了Backbone.js框架中的Router路由功能,Router在Backbone中相当于一个MVC框架中的Controller控制器功能,需要的朋友可以参考下. Backbone ...

  9. React初识整理(四)--React Router(路由)

    官网:https://reacttraining.com/react-router 后端路由:主要做路径和方法的匹配,从而从后台获取相应的数据 前端路由:用于路径和组件的匹配,从而实现组件的切换. 如 ...

  10. hbuilderX创建vue项目之添加router路由(前端萌新)

    作为一个刚刚接触前端不久的新人来说,熟悉了一种目录结构或者项目创建方法以后,恨不得一辈子不会变! 可是人要生活,就要工作,既然是打工,当然要满足雇佣者的要求. 今天我来说说 hbuilderX 这个开 ...

随机推荐

  1. Asp.Net Core 使用Quartz基于界面画接口管理做定时任务

    今天抽出一点点时间来造一个小轮子,是关于定时任务这块的. 这篇文章主要从一下几点介绍: 创建数据库管理表 创建web项目 引入quarzt nuget 包 写具体配置操作,实现定时任务处理 第一步:创 ...

  2. Java强引用、软引用、弱引用及虚引用深入探讨

    强引用.软引用.弱引用和虚引用深入探讨 为了更灵活的控制对象的生命周期,在JDK1.2之后,引用被划分为强引用.软引用.弱引用.虚引用四种类型,每种类型有不同的生命周期,它们不同的地方就在于垃圾回收器 ...

  3. 兼容多种模块规范(AMD,CMD,Node)的代码

    在JavaScript模块化开发中,为了让同一个模块可以运行在前后端,以及兼容多种模块规范(AMD,CMD,Node),类库开发者需要将类库代码包装在一个闭包内. AMD规范 AMD,即“异步模块定义 ...

  4. [20170927]关于hugepages.txt

    [20170927]关于hugepages.txt --//今天测试hugepages与内核参数nr_overcommit_hugepages,才发现HugePages_Surp表示什么? --// ...

  5. 洗礼灵魂,修炼python(12)--python关键词,包

    关键词 1.什么是关键词: 就是系统已经定义好的一些关键词语法,可以直接使用,很明显的就是在IDE里这些关键词会高亮显示的就是 2.有哪些关键词: 前面我们一直在说关键词,内置函数,到底有哪些关键词对 ...

  6. 使用Tampermonkey(油猴) 插件,重新实现了,百度搜索热点过滤功能

    昨天晚上,花了点时间学习了Chrome插件的制作方法,并书写了<Chrome 百度搜索热点过滤插件 - 开源软件>这一文章,简单地介绍自己实现的百度搜索热点过滤神器的原理和使用方式,并进行 ...

  7. server 2008 软阵列

    RAID0:没有容错功能,等.两块以上的硬盘.RAID1:不能提高速度,有容错功能,等.注意:只能用两块硬盘,有的地方说可以用两块以上,你不信试试三块硬盘,肯定添加不了,但是可以做raid10.RAI ...

  8. HTTP协议响应码及get请求和post请求比较

    HTTP协议响应码 1XX:信息响应类,表示接收到请求并且继续处理 2XX:处理成功响应类,表示动作被成功接受.理解和接受 200 OK:表示从客户端发来的请求在服务器端被正常处理了 204 No C ...

  9. 【第一章】zabbix3.4监控WindowsCPU使用率磁盘IO磁盘事件日志监控阈值邮件报警详细配置

    Windows安装zabbix-agent 监控Windows-CPU使用率 监控Windows-磁盘IO性能监控 监控Windows/Linux-磁盘触发器阈值更改 监控Windows-网卡自动发现 ...

  10. ghostscript远程代码执行漏洞复现

    这两天网上ghostscript又又有漏洞信息了,但是没有poc,于是找找资料把今年8月21日的那个验证下 1.关于ghostscript Ghostscript是一套建基于Adobe.PostScr ...