Koa2快速搭建服务器
上手
- 新建文件夹初始化项目,命令行输入
npm init -y
- 安装koa,输入
npm i koa
- 在文件夹下新建
app.js
文件
- app内容
// 1. 创建KOA的实例对象 const Koa = require('koa') const app = new Koa() // 2. 绑定中间件(编写响应函数) // ctx: 上下文,web容器,ctx.request ctx.response // next: 下一个中间件,下一层中间件是否能够得到执行,取决于next这个函数有没有被调用 app.use(async (ctx,next) => {// 刚进中间件做的事ctx.response.body = 'Hello world!'await next() // next()返回的是一个promise对象// 内层所有中间件结束后做的事 }) ... // 3. 监听端口号 app.listen(8888)
项目
准备
- 初始化项目
- 安装koa
- 创建
middleware
文件夹:存放中间件(koa_response_data.js
、koa_response_duration.js
、koa_response_header.js
) - 创建
data
文件夹:用来存放data数据,模拟从数据库获取数据 - 创建
utils
文件夹:存放file_utils.js
,获取data文件数据的方法 - 编写
app.js
文件// 服务器的入口文件 // 1.创建KOA的实例对象 const Koa = require('koa') const app = new Koa() // 2.绑定中间件 // 总耗时中间件 const respDurationMiddleware = require('./middleware/koa_response_duration') app.use(respDurationMiddleware) // 响应头中间件 const respHeaderMiddleware = require('./middleware/koa_response_header') app.use(respHeaderMiddleware) // 逻辑处理中间件 const respDataMiddleware = require('./middleware/koa_response_data') app.use(respDataMiddleware) // 3.绑定端口号 8888 app.listen(8888)
- 编写
koa_response_duration.js
文件(总耗时中间件)// 计算服务器消耗时长的中间件 module.exports = async (ctx, next) => {// 记录开始时间 const start = Date.now() // 让内层中间件得到执行 await next() // 记录结束的时间 const end = Date.now() // 设置响应头 X-Response-Time const duration = end - start // ctx.set 设置响应头 ctx.set('X-Response-Time', duration + 'ms') }
- 编写
koa_response_header.js
文件(响应头中间件)// 设置响应头的中间件 module.exports = async (ctx, next) => {const contentType = 'application/json; charset=utf-8' ctx.set('Content-Type', contentType) ctx.set("Access-Control-Allow-Origin", "*") ctx.set("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE") await next() }
- 编写
koa_response_data.js
文件(逻辑处理中间件)// 处理业务逻辑的中间件,读取某个json文件的数据 const path = require('path') const fileUtils = require('../utils/file_utils') module.exports = async (ctx, next) => {// 根据url const url = ctx.request.url // /api/seller ../data/seller.json let filePath = url.replace('/api', '') // /seller filePath = '../data' + filePath + '.json' // ../data/seller.json filePath = path.join(__dirname, filePath) try {const ret = await fileUtils.getFileJsonData(filePath)ctx.response.body = ret } catch (error) {const errorMsg = {message: '读取文件内容失败, 文件资源不存在',status: 404}ctx.response.body = JSON.stringify(errorMsg) }console.log(filePath) await next() }
- 编写
file_utils.js
文件// 读取文件的工具方法 const fs = require('fs') module.exports.getFileJsonData = (filePath) => {// 根据文件的路径, 读取文件的内容 return new Promise((resolve, reject) => {fs.readFile(filePath, 'utf-8', (error, data) => {if(error) {// 读取文件失败reject(error)} else {// 读取文件成功resolve(data)}}) }) }
Koa2快速搭建服务器相关推荐
- Python 3 怎么快速搭建服务器
Python 3 怎么快速搭建服务器 python 3 环境,我就不多说了 1.新建一个文件夹 2.放文件夹里一个 index.html 文件用来默认访问,不然会炸的 3.进入文件目录 4.执行以下命 ...
- 微信小程序如何快速搭建服务器?
前言 有很多个人移动开发者都在问如何快速搭建服务端,供前端调用API使用?本文Joe大叔就介绍一个快速.简单.便携的方案给朋友们,我们接着往下看. 一.如何快速搭建服务端? 这里我们选择一个叫做Bm ...
- 使用node.js快速搭建服务器(vscode版)
(1)下载⼀个node.js,⼀路next 直到提示安装成功 检测:打开终端,输⼊ node-v (终端就是下面直接拉上来) 提示这个即为下载成功 (2)打开编译器,打开终端,输⼊npm init 在 ...
- 宝塔面板服务器ip地址修改_「网站」快速搭建服务器环境及网站
目录:「NAS」我的搭建NAS全过程 在文章开头我想说明的是,此文章中所使用的工具为 BT 面板即宝塔面板,适合小白使用 但是对于想要提升个人能力来说, BT 面板并不是一个好选择,而作为新手来说,可 ...
- 如何快速搭建服务器的IP隧道
首先无论是在Linux服务器上还是windows上搭建隧道ip,都需要配置好 redis.python3.OpenResty. redis配置: 最前面的可以看这篇文章 Linux搭建redis单机 ...
- bitnami mysql_Bitnami 快速搭建服务器环境(Django)
Bitnami 提供集成式服务器环境安装包,可一键式搭建众多主流的网站.服务环境.如 LAMP.Drupal.Django 等.同时支持 Windows.Linux(如 Centos 和 ubuntu ...
- CentOS快速搭建服务器 超简单
一.购买腾讯云学生优惠服务器 https://cloud.tencent.com/act/campus?fromSource=gwzcw.594895.594895.594895 二.在电脑上安装XS ...
- 如何通过nodejs快速搭建一个服务器
在前端开发过程中,可能某些时候需要自己搭建一台服务器用于一些文件图片请求或者进行后端相关知识的学习.本文主要讲解如何通过nodejs进行一个基础服务器的搭建,包括如何将文件布置的服务器,以及基础接口的 ...
- 10分钟快速搭建自己的服务器
快速搭建服务器 1.创建虚拟机 2.CentOS 7的安装 3.CentOS 7 配置 4. Xshell连接 5.Docker的安装 前言:买了个阿里云的服务器,但是由于内存小docker运行几个容 ...
最新文章
- DynamicPropertyAccessor Expression lambda
- 在C 函数中保存状态:registry、reference和upvalues
- 论文笔记 《Selective Search for Object Recognition》
- java apt anno_Android Studio中使用apt
- 一次频繁Full GC的排查过程,根源居然是它...
- 利用github page搭建博客
- linux access源码,从零开始学习Linux:Day04 源码安装Nginx 。acess/status/referer
- UVA12190 Electric Bill【二分搜索】
- 使用Eclipse编写Processing小程序
- Visio ——一款能让你画图“走捷径”的软件
- itext7中文开发文档(二)
- 毕设-基于SpringBoot度假村租房管理系统
- 转载:全志问题解决方法
- 物流管理python实践报告_Python程序设计 实验报告6
- Python 随机提取Excel中部分数据并输出为新表格
- 仅需一步,完美解决 0xc000007b 报错
- 2023王道考研数据结构第二章---单链表
- 记录我的大疆无人机消费体验
- 网络游戏之快照插值物理模拟
- 自适应滤波器更新算法-EP2