koa+mysql创建后端服务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: koa-router是路由文件,koa-cors是后端跨域组价,koa-bodyparse是post传值接受的中间键

一、初始化项目


1.使用makdir 文件夹名创建一个文件夹


例如


makdir koa_start
cd koa_start
然后执行 npm init


2.安装 koa、 koa-router、 koa-cors、 koa-bodyparser,mysql


npm install koa,koa-router, koa-cors,koa-bodyparse,mysql --save


koa-router是路由文件,koa-cors是后端跨域组价,koa-bodyparse是post传值接受的中间键


2.新建app.js


// server.js文件
let Koa = require("koa");
let Router = require("koa-router");
let cors = require("koa-cors");
const bodyParser = require("koa-bodyparser");
let fs = require("fs");
const app = new Koa();
app.use(bodyParser());
const router = new Router();
const db = require("./mysqlDB");
router.post("/user/login", async (ctx,next) => {
  let ctx_query = ctx.request.body;
  let sql = `select * from users where user='${ctx_query.username}' and passwd='${ctx_query.password}'`;
  const result = await db.query(sql); //查询数据库
    if (result.status == 200) {
      if(result.results.length>0){
         ctx.body = {
           code: 200,
           token: "7987asdjabsdqweqwesdqwewqe",
         };
      }else{
          ctx.body = {
            code: 400,
            message: "用户名和密码错误,请重新输入",
          };
      }
    } else if (result.status == 400) {
       ctx.body = {
         code: 401,
         message: "连接错误,请重新再试",
       };
    }else{
      ctx.body = {
        code: 500,
        message: "服务器连接失败",
      };
    }
});
app.use(cors());
// 将koa和两个中间件连起来
app.use(router.routes()).use(router.allowedMethods());
// 监听3001端口
app.listen(3001,()=>{
    console.log('server is alerday start')
});


app.use(bodyParser());是为了在post请求中转化得到请求参数的 所以post得到前端请求的参数为 let ctx_query = ctx.request.body; get得到请求的参数为let ctx_query = ctx.query;


3.新建dbconfig.js数据库的配置


dbconfig.js
module.exports = {
  config: {
    db_host: "localhost", --主机名
    db_port: "3306",      --主机端口
    db_name: "test",      --数据库名
    db_user: "root",      --数据库登录名
    db_passwd: "root"     --数据库连接密码
  },
};


4.新建mysqlDB数据库连接文件


mysqlDB.js
const mysqlDb = require("mysql");
const config = require("./dbconfig");
let options = {
  host: config.config.db_host,
  user: config.config.db_user,
  password: config.config.db_passwd,
  database: config.config.db_name,
  multipleStatements: true,
};
 var pool = mysqlDb.createPool(options);
 exports.query = function (sql, values) {
    return new Promise((resolve, reject) => {
      pool.getConnection(function (err, connection) {
        if (err) {
          reject(err)
          //console.log(err, "数据库连接失败");
          resolve({
            status: 500,
          });
        } else {
          //console.log("数据库连接成功");
          connection.query(sql, values, (err, results) => {
            if (err) {
              reject(err);
              resolve({
                status: 400
              });
            } else {
              connection.release();
              resolve({
                status: 200,
                results,
              });
            }
            //connection.release() // 释放连接池
          });
        }
      })
    })
  }


5、启动项目


package.json里面配置


{
  "name": "koa-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "koa": "^2.13.1",
    "koa-bodyparser": "^4.3.0",
    "koa-cors": "0.0.16",
    "koa-router": "^10.0.0",
    "mysql": "^2.18.1",
    "save": "^2.4.0"
  }
}


npm run start启动项目


然后在浏览器是上监听3001端口,服务器就启动了

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
缓存 开发框架 监控
优化后端服务响应时间的关键策略与实践
在当今数字化时代,优化后端服务响应时间至关重要。本文探讨了几种关键策略和实践方法,帮助开发团队提高系统性能和用户体验。通过合理的资源分配、技术选型和代码优化,可以有效缩短响应时间,提升系统的整体效率和稳定性。【7月更文挑战第5天】
15 0
|
16天前
|
缓存 负载均衡 应用服务中间件
Nginx如何反向代理后端服务?
【7月更文挑战第7天】
26 1
Nginx如何反向代理后端服务?
|
15天前
|
SQL 安全 关系型数据库
【SQL】已解决:MySQL 服务无法启动
【SQL】已解决:MySQL 服务无法启动
91 1
|
26天前
|
文字识别 小程序 API
视觉智能开放平台产品使用合集之使用SDK进行视频活体检查时,如何将视频URL传递给后端服务
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
29天前
|
监控 API 数据安全/隐私保护
构建高效后端服务:微服务架构的实践与挑战
【6月更文挑战第23天】在现代软件开发中,微服务架构已成为设计高性能、可扩展后端系统的首选模式。本文将深入探讨微服务的设计原则、实践方法及其面临的技术挑战,旨在为开发者提供一个全面的微服务实施指南。
32 3
|
1月前
|
关系型数据库 MySQL Linux
Linux下怎么快速部署MySQL服务,并使用
Linux下怎么快速部署MySQL服务,并使用
36 5
|
13天前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
22 0
|
1月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用问题之整库从mysql同步到StarRocks里面,首次全量是否会对mysql造成大量资源消耗,导致影响业务服务
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
18天前
|
关系型数据库 MySQL
解决MySQL8.0本地计算机上的MySQL服务启动后停止没有报告任何错误
解决MySQL8.0本地计算机上的MySQL服务启动后停止没有报告任何错误
61 0
|
18天前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署

推荐镜像

更多