一、搭建本地服务器
(1)创建项目
(2)执行npm init创建package.json文件
(3)安装依赖 cnpm install koa koa-router --save
(4)安装自动监测代码变更的工具?cnpm install -g nodemon
(5)代码示例
package.json
{
"name": "koa01",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node app.js",
"serve": "nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"koa": "^2.13.1",
"koa-router": "^10.1.1"
}
}
app.js
const koa = require("koa");
const Router = require("koa-router");
// 实例化koa
const app = new koa();
const router = new Router()
// 路由
router.get ('/', async ctx => {
ctx.body = {
msg: 'Hello koa Interfaces'
}
})
// 配置路由
app.use(router.routes()).use(router.allowedMethods());
const port = process.env.port || 5000;
app.listen(port, ()=>{
console.log(`server started on ${port}`)
})
二、连接mongodb数据库
安装依赖
cnpm install mongoose --save
将连接地址写在配置文件里面,./config/key.js
module.exports = {
mongoURL: "mongodb+srv://user:root@cluster0.r9bsn.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
}
// 在app.js中引入mongoose进行连接
const koa = require("koa");
const Router = require("koa-router");
const mongoose = require("mongoose")
// 实例化koa
const app = new koa();
const router = new Router()
// 路由
router.get ('/', async ctx => {
ctx.body = {
msg: 'Hello koa Interfaces a'
}
})
// config
const db = require('./config/keys').mongoURL
// 连接数据库
mongoose.connect(db,
{useNewUrlParser:true}
)
.then(()=>{
console.info('Mongodb COnnected.....');
}).catch(err => {
console.log(err);
})
// 配置路由
app.use(router.routes()).use(router.allowedMethods());
const port = process.env.port || 5000;
app.listen(port, ()=>{
console.log(`server started on ${port}`)
})
三、对路由进行模块化
创建目录routes/api/users.js
内容如下
// 关于用户的接口文件
const Router = require('koa-router');
const router = new Router();
/**
* @route GET api/users/test
* @description 测试借口地址
* @access 接口是公开的
*/
router.get("/test",async ctx => {
ctx.status = 200;
ctx.body = {
msg: 'users works...'
}
})
module.exports = router.routes()
在api.js中进行引入
const koa = require("koa");
const Router = require("koa-router");
const mongoose = require("mongoose")
// 实例化koa
const app = new koa();
const router = new Router()
// 引入 users.js
const users = require('./routes/api/users')
// 路由
router.get ('/', async ctx => {
ctx.body = {
msg: 'Hello koa Interfaces a'
}
})
// config
const db = require('./config/keys').mongoURL
// 连接数据库
mongoose.connect(db,
{useNewUrlParser:true}
)
.then(()=>{
console.info('Mongodb COnnected.....');
}).catch(err => {
console.log(err);
})
// 配置路由地址
router.use('/api/users',users)
// 配置路由
app.use(router.routes()).use(router.allowedMethods());
const port = process.env.port || 5000;
app.listen(port, ()=>{
console.log(`server started on ${port}`)
})
四、创建用户模型
创建目录及文件models/user.js
内容如下
const mongoose = require("mongoose")
const Schema = mongoose.Schema;
// 实例化数据模板
const UserSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
avatar: {
type: String
},
date: {
type: Date,
default: Date.now
}
});
module.exports = User = mongoose.model("users", UserSchema);
在需要使用的路由文件routes/api/user.js里面进行引入
//?引入User
const?User?=?require("../../models/user")
五、安装调试接口工具? postman
六、注册用户接口
(1)获得用户传过来的数据,需要安装koa-bodyparser
cnpm install koa-bodyparser --save
在app.js文件中引入并使用
var?bodyParser?=?require("koa-bodyparser")
app.use(bodyParser())
(2)使用bcryptjs对密码进行加密
安装依赖?cnpm i bcryptjs --save
需要使用的文件中?
//?引入加密依赖
const?bcrypt?=?require('bcryptjs')
?使用代码如下
router.post('/register', async ctx=> {
// console.log(ctx.request.body)
// 存储到数据库
const findResult = await User.find({
email: ctx.request.body.email
})
if (findResult.length > 0) {
console.log(findResult)
ctx.status = 500;
ctx.body = {
email: '邮箱已被占用'
}
} else {
// 没有查到
const newUser = new User({
name: ctx.request.body.name,
email: ctx.request.body.email,
password: ctx.request.body.password
})
/*await bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
// Store hash in your password DB.
newUser.password = hash
});
});*/
let hasPwd = bcrypt.hashSync(newUser.password, 10);
newUser.password = hasPwd
console.log(newUser)
// 存储到数据库
await newUser
.save().
then(user => {
ctx.status = 200;
ctx.body = user;
})
.catch(err => {
console.log(err)
})
//
ctx.body = newUser
}
//ctx.status = 200
})
?七、全球公认头像的使用
安装?
npm install gravatar --save
|