Koa2+mysql 搭建用户信息注册和登录接口服务(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

koa2 官网



https://koa.bootcss.com/


什么是koa?



Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。


初始化koa项目



npm init


安装koa



npm i koa


新建一个app.js



// 导入koa
const Koa = require('koa')
// 创建一个koa对象
const app = new Koa()
//监听端口
const port = 3000
app.listen(port);
console.log(`启动成功,服务端口为:${port}`)


运行app.js


node app.js
// console.log(`启动成功,服务端口为:${port}`)


添加启动脚本命令


//package.json
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev":"node app.js"
  }

可以运行 npm run dev启动我们的服务。


使用 www 启动服务


在根目录建立 bin文件夹,然后新建 www文件

// bin/www
var app = require('../app');
var http = require('http');
var server = http.createServer(app);
//服务监听端口
server.listen('3001');


配置www启动脚本


//package.json
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev":"node bin/www"
  }

然后 npm run dev就能启动了。


加点服务的返回内容


// 导入koa
const Koa = require('koa')
// 创建一个koa对象
const app = new Koa()
//返回的内容
app.use(async ctx => {
    ctx.body = 'Hello World';
});
//监听端口
const port = 3000
app.listen(port);
console.log(`启动成功,服务端口为:${port}`)

1.JPG

安装中间件 koa-bodyparser


这个中间件可以将post请求的参数转为json格式返回;

npm install --save koa-bodyparser


bodyparser 使用


// 导入koa
const Koa = require('koa')
const bodyParser = require('koa-bodyparser');
// 创建一个koa对象
const app = new Koa()
app.use(bodyParser());
// request.method可以获取请求方法。
// get,post或者其他类型(request对象被封在ctx内,所以也可以ctx.method获取)
app.use(async (ctx) => {
    if (ctx.url === '/' && ctx.method === 'POST') {
        ctx.body = ctx.request.body
    } else {
        // 其他请求显示404
        ctx.body = '<h1>404!</h1>'
    }
})
//监听端口
const port = 3000
app.listen(port);
console.log(`启动成功,服务端口为:${port}`)

开始写接口之前,我们安装一下路由 Koa-router

Koa-router是 koa 的一个路由中间件,它可以将请求的URL和方法(如:GETPOSTPUTDELETE 等) 匹配到对应的响应程序或页面。

npm install koa-router --save


使用koa-router


const Router = require('koa-router'); // 引入koa-router
const router = new Router(); // 创建路由,支持传递参数
// 指定一个url匹配
router.get('/', async (ctx) => {
    ctx.type = 'html';
    ctx.body = '<h1>hello world!</h1>';
})
// 调用router.routes()来组装匹配好的路由,返回一个合并好的中间件
// 调用router.allowedMethods()获得一个中间件,当发送了不符合的请求时,会返回 `405 Method Not Allowed` 或 `501 Not Implemented`
app.use(router.routes());
app.use(router.allowedMethods({ 
    // throw: true, // 抛出错误,代替设置响应头状态
    // notImplemented: () => '不支持当前请求所需要的功能',
    // methodNotAllowed: () => '不支持的请求方式'
}));


koa-router 不同请求方式


Koa-router 请求方式: get 、 put 、 post 、 patch 、 delete 、 del ,而使用方法就是 router.方式() ,比如 router.get() 和 router.post() 。而 router.all() 会匹配所有的请求方法。


// 指定一个url匹配
router.get('/test', async (ctx) => {
    ctx.type = 'html';
    ctx.body = '<h1>hello world!</h1>';
})
router.get("/user", async (ctx) => {
    ctx.body = '叫我詹躲躲';
})

2.JPG


新建router/index.js 路由文件夹


// router/index.js
const Router = require('koa-router')
const router = new Router()
//接口函数
class UserController {
    // 新增一条数据
    async getUserName(ctx) {
        ctx.body = {
            code: 200,
            message: '叫我詹躲躲',
            type: 'warning'
        }
    }
}
//实例
const userController = new UserController()
// 测试
router.get('/test', userController.getUserName)
module.exports = router
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
13 0
|
4天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
20 0
|
4天前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之如何使用ADB MySQL湖仓版声纹特征提取服务
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
4天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
26 0
|
4天前
|
关系型数据库 MySQL 数据库
MySQL 启动 登录报错Job for mysqld.service failed because the control process exited with error code. See
MySQL 启动 登录报错Job for mysqld.service failed because the control process exited with error code. See
|
4天前
|
安全 关系型数据库 虚拟化
WIndows Server 远程桌面服务—RDS
WIndows Server 远程桌面服务—RDS
|
4天前
|
SQL 关系型数据库 MySQL
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
该文章提供了在虚拟机上安装MySQL服务的简化方法,特别是针对新手。作者提供了一个自动化脚本`install_mysql.sh`,使得安装过程更简单。用户需要下载`install.rpm`资源,将其放在指定目录下,然后创建并编辑脚本文件,将提供的代码粘贴进去,通过`chmod u+x`授权,最后运行脚本`./install_mysql.sh [rpm文件路径]`来安装MySQL。文章还附有相关图片说明。
37 1
【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务
|
4天前
|
弹性计算 关系型数据库 MySQL
检测MySQL 服务是否存活
【4月更文挑战第29天】
9 0
|
4天前
|
NoSQL 关系型数据库 Redis
数据管理DMS产品使用合集之要通过 DMS 登录到 RDS、DRDS 或 Redis,我该怎么操作
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
4天前
|
弹性计算 关系型数据库 MySQL
检测 MySQL 服务是否存活
【4月更文挑战第28天】
11 0

推荐镜像

更多