首先呢 我们要先创建一个文件夹 开启终端服务
初始化一下 package.json 文件夹 我们可以在 这个里面看到我们下载的依赖
npm init -y
安装 框架 路由
npm i koa koa-router --save //安装到生产环境
安装nodemon
npm i nodemon -D //安装到开发环境 用来监视node.js 的任何更改 之后 重启服务
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start":"nodemon app.js"
},
配置到 package.json 里 的 scripts(指定运行脚本命令)
创建一个app.js
//引入 koa koa-router
const Koa = require('koa');
const Router = require('koa-router');
//实例化
const app = new Koa();
const router = new Router();
//get 请求 用来获取数据
router.get('/', ctx => {
ctx.body = "我是用户列表"
})
//get 请求 用来获取指定数据
router.get('/:id', ctx => {
console.log(ctx.params.id)
ctx.body = "获取某一个用户"
})
//post 请求 用来进行添加 登录 注册
router.post('/', ctx => {
ctx.body = "添加一个新的用户"
})
//put 请求 用来进行修改某一项数据
router.put('/:id', ctx => {
ctx.body = "修改用户成功"
})
//delete 请求 用来删除某一项数据
router.delete('/:id', ctx => {
ctx.body = "删除用户成功"
})
//抛出路由
module.exports = router.routes();
app.use(router.routes()).use(router.allowedMethods());
//监听3000端口
app.listen(3000, () => {
console.log('正在监听3000端口的服务')
})
启动 服务
npm run start // 刚刚在scripts 里面配置的运行脚本指令
启动成功效果
启动服务 我们可以根据 在地址栏 输入 端口号 localhost:3000 去进行查看 配置的路由
由于我这里的 端口号 3000 被占用 所以 将端口号改成了3001
配置koa-body
我们现在 get 的方式请求路由 但是我将 get 改为post之后
//get 请求 用来获取数据
router.post('/', ctx => {
ctx.body = "我是用户列表"
})
报错 并且页面显示
Method Not Allowed(不允许此方法)
因为我们的post请求 属于 密文请求 所以不会将数据在页面显示
我们需要安装koa-body 才可以使用 post 请求 我们的koa-body 在引入 使用的时候要放在 路由前面
npm i koa-body --save
使用方法
const koaBody=require('koa-body')
app.use(koaBody())
app.use(router.routes()).use(router.allowedMethods());
页面显示效果
这个时候 说明配置成功了
创建一个 routers 文件夹 并且在文件夹下面创建一个user子路由
routers/user.js
const Router = require('koa-router');
const router = new Router({prefix:'/user'});
router.get('/',async ctx=>{
ctx.body="我是User页面"
})
module.exports=router.routes()
app.js
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
const koaBody=require('koa-body')
const User=require('./routers/user')
//get 请求 用来获取数据
router.post('/', ctx => {
ctx.body = "我是用户列表"
})
//get 请求 用来获取指定数据
router.get('/:id', ctx => {
console.log(ctx.params.id)
ctx.body = "获取某一个用户"
})
//post 请求 用来进行添加 登录 注册
router.post('/', ctx => {
ctx.body = "添加一个新的用户"
})
//put 请求 用来进行修改某一项数据
router.put('/:id', ctx => {
ctx.body = "修改用户成功"
})
//delete 请求 用来删除某一项数据
router.delete('/:id', ctx => {
ctx.body = "删除用户成功"
})
app.use(koaBody())
app.use(User)
app.use(router.routes()).use(router.allowedMethods());
app.listen(3001, () => {
console.log('正在监听3001端口的服务')
})
连接数据库
现在 实现了 接口之后 就连接数据库吧 我这里连接 的是mongoDB 数据库
npm i mongoose
app.js
const mongoose = require('mongoose');
// mongoose.connect('mongodb://localhost/文件夹名称');
mongoose.connect('mongodb://localhost/king');
var db = mongoose.connection;
db.on('error', console.error.bind(console, '连接失败!!!'));
db.once('open', function () {
console.log('连接成功!!!')
});
效果
优化路由
优化路由 是为了 将来 我们的路由会越来越多 ,这样 我们每一次都需要在 app.js 里面去引入路由
这样就非常的麻烦 ,所以这样会节省我们的时间
routers/index.js
const fs = require("fs");
module.exports = (app) => {
fs.readdirSync(__dirname).forEach((file) => {
if (file === "index.js") {
return false;
}
const router = require(`./${file}`);
app.use(router.routes()).use(router.allowedMethods());
});
};
app.js
将app里面 引入的路由删除 引入 routers下面的index.js文件
const routing=require('./routers/index')
mongoose.connect('mongodb://localhost/king');
var db = mongoose.connection;
db.on('error', console.error.bind(console, '连接失败!!!'));
db.once('open', function () {
console.log('连接成功!!!')
});
app.use(router.routes()).use(router.allowedMethods());
routing(app)
这样 我们 在routers文件夹下面再去创建子路由 就不需要引入了
代码分离
代码分离 是让我们的路由页面和逻辑给拆分开 这样我们的代码不会出现混淆的情况 会让代码的阅读者 容易阅读
创建 controllers/userDemo.js
const User=async ctx=>{
ctx.body="我是User页面"
}
module.exports={User}
user.js
const Router = require('koa-router');
const router = new Router({prefix:'/user'});
const {User}=require('../controllers/userDemo')
router.get('/',User)
module.exports=router