koa基础应用

不要把koa想得太复杂,他就是一个Node框架而已。

在本地应用安装好Node和koa后,先实现一下简单的服务app.js,代码如下:

const Koa = require('koa')
const app = new Koa();
app.use(async (context) => {context.body = 'hello Koa'
});app.listen(3000);console.log('服务正在启动,端口号为:3000');

执行命令:node app.js。然后在浏览器中打开http://localhost:3000/,页面显示:hello Koa。

在这里插入图片描述

中间件的使用

什么是中间件呢?中间件,就是在请求和响应之间设置不同的关卡,做不同类型的工作。比如:

在这里插入图片描述
安装几个常见的中间,因为是在学习,所以尽量了解多个中间件。在实际开发中,根据需要安装合适的中间件即可。

koa-router 路由
koa-onerror 错误信息
koa-bodyparser 解析body的JSON
koa-logger 日志
koa-cors 跨域
koa-static 静态资源
nodemon 热更新
debug debug模式

数据库就使用MySQL。

项目的目录结构是这样:

  1. middelware,中间件;
  2. controller:控制层、业务层
  3. config:数据库等等设置文件
  4. dbhelper:SQL语句
  5. routes:路由
  6. modal:对象层

路由

前端项目有路由,后端也有路由。前端的路由是浏览器提供监听URL的相关事件,用来进行相关的处理;

后端路由:则是拿到请求对象中的URL,根据URL来执行对应的逻辑。

koa有两种路由:一种是原生路由,通过request对象的URL属性进行判断,作相应的逻辑处理;

另一种使用koa-router中间件来实现路由。

原生路由:

const Koa = require('koa')
const app = new Koa();app.use(async (context, next) => {const url = context.request.url;let content = ''switch (url) {case '/api/get/userInfo':content = '用户信息的接口';break;case "/api/update/userInfo":content = '更新用户信息的接口';break;case '/api/del/userInfo':content = '删除用户的接口'break;default:content = '400:没有匹配到这个接口';break;}
});app.listen(3000, () => {console.log('服务正在启动,端口号为:3000');
});

中间件路由,安装好koa-router依赖之后,首先注册一下中间件:

修改一下app.js文件:

const Koa = require('koa')
const app = new Koa();
const Router = require('koa-router');const router = new Router();
router.get('/api/get/userInfo', async (context) => {context.body = '获取用户信息的接口'
});app.use(router.routes()).use(async (context) => {context.body = "没有匹配的接口"
})
app.listen(3000, () => {console.log('服务正在启动,端口号为:3000');
});

效果如图:

在这里插入图片描述
同样,其他中间件,以同样的方法引入:

// 注册 onerror
onerror(app);// 注册bodyparser
app.use(bodyparser());app.use(logger());
app.use(require('koa-static')(__dirname,'public'));
app.use(cors());

静态服务器

静态服务器,就是提供一个读取静态文件、静态目录的作用。

koa也可以实现静态服务器的功能。有两种方式:一种是利用koa中间件【koa-static】;另一种使用原生的方式来实现。

在项目目录下的public文件夹。就是存放静态文件的。

在这里插入图片描述
配置如下:

const Koa = require('koa')
const app = new Koa();
const Router = require('koa-router');
const onerror = require('koa-onerror');
const bodyparser = require('koa-bodyparser');
const logger = require('koa-logger');
const cors = require('koa-cors');
const path = require('path');
const static = require('koa-static');const staticPath = './public'// 注册 onerror
onerror(app);// 注册bodyparser
app.use(bodyparser());app.use(logger());
app.use(static(path.join(__dirname,staticPath)));const router = new Router();
router.get('/api/get/userInfo', async (context) => {context.body = '获取用户信息的接口'
});app.use(router.routes()).use(async (context) => {context.body = "没有匹配的接口"
})app.listen(3000, () => {console.log('服务正在启动,端口号为:3000');
});

这就是koa的基本配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145430.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业风险管理策略终极指南

企业风险管理不一定是可怕的。企业风险管理是一个模糊且难以定义的主题领域。它涵盖了企业的多种风险和程序,与传统的风险管理有很大不同。 那么,企业风险管理到底是什么?在本文中,我们将确定它是什么,提出两种常见的…

B058-SpringBoot

目录 springboot概念与作用入门案例springboot运行方式热部署配置文件Profile多环境支持整合测试-springboot-testSpringboot-web1.返回json数据2.返回页面(模板技术)thymeleaf1.导入thymeleaf依赖2.模板文件3.controller4.启动类 SSM整合1.导包2.项目目…

机器人中的数值优化|【四】L-BFGS理论推导与延伸

机器人中的数值优化|【四】L-BFGS理论推导与延伸 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化,拟牛…

让大脑自由

前言 作者写这本书的目的是什么? 教会我们如何让大脑更好地为自己工作。 1 大脑的运行机制是怎样的? 大脑的基本运行机制是神经元之间通过突触传递信息,神经元的兴奋和抑制状态决定了神经网络的运行和信息处理,神经网络可以通过…

使用Qt验证RGB格式

下面我们用不同的颜色来绘制一块矩形区域,来对比学习RGB颜色。 一片漆黑的黑色 黑色在RGB中是三个颜色分量都是0。也就是没有颜色。 下面我们绘制一个水平100个像素,垂直200个像素的矩形区域,颜色设置为黑色。 #ifndef MAINWINDOW_H #def…

SpringBoot整合阿里云OSS文件存储解决方案

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Sp…

Dink进阶之路

1、环境变量 cat /etc/profile #flink需要 export HADOOP_CLASSPATHhadoop classpath export HADOOP_CONF_DIR/etc/hadoop/conf2、Flink配置 2.1、flink-conf.yaml jobmanager.rpc.address: node-146 jobmanager.rpc.port: 6123 # 设置jobmanager总内存 jobmanager.memory.…

clip代码安装实操

CLIP模型及代码地址:GitHub - openai/CLIP: Contrastive Language-Image Pretraining 代码准备环境 先创建一个anaconda虚拟环境,包含python3.7版本,将该环境命名为clip。成功。 ( pytorch1.7.1 所需 python 版本 >3.6&…

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了🤣, 现在从市场份额来看, 确实 React 还…

抓包习讯云院校数据通过PHP解析导入数据库

前言 最近,打卡APP需要这个数据,通过抓包后发现这个数据是固定的,获取很简单,但是数据太多,手动导入不显示,于是分析了json格式后果断通过脚本完成 【推荐】 《【MQTT】Esp32数据上传采集:最…

GitHub上有助于开发微信小程序的仓库

2023年9月30日,周六晚上 最近帮同学在GitHub找了一些开发小程序会用到的东西 目录 UI库WePY框架基于WePY框架的Demo微信小程序开发资源汇总 UI库 GitHub - Tencent/weui-wxss: A UI library by WeChat official design team, includes the most useful widgets/m…

CSS基础介绍2

CSS使用三种方式 方式1&#xff1a;在标签的style属性上设置CSS样式&#xff08;行内样式&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>在标签的style属性上设置CSS样式</title>…

吉力宝:智能科技鞋品牌步力宝引领传统产业创新思维

在现代经济环境下&#xff0c;市场经济下产品的竞争非常的激烈&#xff0c;如果没有营销&#xff0c;产品很可能不被大众认可&#xff0c;酒香也怕巷子深&#xff0c;许多传统产业不得不面临前所未有的挑战。而为了冲出这个“巷子”&#xff0c;许多企业需要采用创新思维&#…

Sentinel学习(1)——CAP理论,微服务中的雪崩问题,和Hystix的解决方案 Sentinel的相关概念 + 下载运行

前言 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 本篇博客介绍CAP理论&#xff0c;微…

Egg使用jwt拦截jtoken验证

安装 npm install egg-jwt注册插件 在config文件夹子下 plugin,js下 use strict;module.exports {//mysqlmysql: {enable: true,package: egg-mysql},//jwtjwt: {enable: true,package: egg-jwt} };使用中间件 在app文件下创建 middleware 文件夹 在middleware 文件下创建…

安卓 kuaishou 设备did和egid 学习分析

did和egid注册 接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id public static final Random f16237a new Random(System.currentTimeMillis()); public static long m19668a() { return f1623…

网络-Ajax

文章目录 前言一、Ajax优点&#xff1a;缺点&#xff1a; 二、使用步骤XNLHttpRequest对象完整代码 总结 前言 本文主要记录Ajax技术的简介&#xff0c;以及用法。 一、Ajax Ajax是一组用于在Web浏览器和Web服务器之间进行异步通信的Web开发技术。 它代表着Asynchronous Java…

PS 切片工具 选择切片 切片存储

上文 PS 透视裁剪工具 中 我们简单讲述了透视裁剪工具 今天 我们来讲他后面的切片工具 首先 他的用途还是很多的 例如 你有一个很大的图片 其中包括 轮播 导航 主题内容 但他们都在一个图片上 你就可以用切片工具 将完整的图片切成多个部分 这里 我们选择了切片工具 光标也会…

leetcode-----二叉树习题

目录 前言 1. 二叉树的中序遍历 2. 相同的树 3. 二叉树的最大深度 4. 二叉树的最小深度 5.二叉树的前序遍历 6. 二叉树的后序遍历 7. 对称二叉树 前言 前面我们学习过了二叉树的相关知识点&#xff0c;那么今天我们就做做练习&#xff0c;下面我会介绍几道关于二叉树的…

大数据Flink(九十三):DML:Order By、Limit 子句

文章目录 DML:Order By、Limit 子句 一、Order By 子句