nodejs-koa

本文档详细介绍了如何使用Node.js和Koa搭建后端服务,包括初始化项目、引入Koa和Koa-router、连接MongoDB数据库、设计接口、密码加密、登录验证、表单验证以及个人信息接口的实现。涉及MongoDB、password-hash-and-salt、jsonwebtoken等模块的使用。
摘要由CSDN通过智能技术生成

nodejs搭建koa后端

1、初始化

(1)、package.json

使用npm init -y进行初始化package.json

(2)、引入koa和koa-router

npm install koa --save, npm insatll koa-router --save

(3)、新建app.js

然后进行引入koakoa-router

// 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 interface' }
})
// 配置路由
app.use(router.routes()).use(router.allowedMethods())
// 设置端口号
const port = process.env.PORT || 5000
// 端口号监听
app.listen(port, () => {
   
  console.log(`server started on ${
     port}`)
})

然后进行配置package.json中的相关配置

"scripts": {
   
    "start": "node app.js",
    "server": "nodemon app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

(4)、连接MongoDB数据库

首先使用npm i mongoose --save,然后进行引入

// config文件夹下的keys.js
module.exports = {
   
  mongoURL: 'mongodb+srv://test:test123456@cluster0.7aujy.mongodb.net/test', // 数据库地址
  secretOrKey: 'secret',
}
// app.js
const mongoose = require('mongoose')
// config
const db = require('./config/keys').mongoURL
// 连接数据库
mongoose
  .connect(db, {
   
    useNewUrlParser: true,
    useUnifiedTopology: true,
  })
  .then(() => {
   
    console.log('MongoDb Connected...')
  })
  .catch((err) => {
   
    console.log(err)
  })

(5)、设计接口以及模板

新建routes文件夹,在其中创建一个api文件夹,在api文件夹下新建users.js文件,然后进行引入相应的模块。

// users.js
const Router = require('koa-router')
const router = new Router()
/**
 * @route GET api/users/test
 * @desc 测试接口地址
 * @access 接口是公开的
 */
router.get('/test', async (ctx) => {
   
  ctx.status = 200
  ctx.body = {
    msg: 'user works....' }
})
// 导出
module.exports = router.routes()

然后在app.js中指定映射地址,进行引入users.js

// app.js
// 引入users.js
const users = require('./routes/api/users')
// 配置路由地址localhost:5000/api/users
router.use('/api/users', users)

(6)、配置接口所需要的模型

在根目录下创建一个models文件夹,然后创建users.js中的接口所需要的模型,创建一个User.js文件,使用mongoose进行配置模型。

// User.js
// 引入mongoose模块
const mongoose = require('mongoose')
// 创建模板
const Schema = mongoose.Schema
// 实例化模板
const UserSchema = new Schema({
   
  name: {
   
    type: String,
    require: true,
  },
  email: {
   
    type: String,
    require: true,
  },
  password: {
   
    type: String,
    require: true,
  },
  avatar: {
   
    type: String,
  },
  date: {
   
    type: Date,
    default: Date.now,
  },
})
// users就是在数据库中的表
module.exports = User = mongoose.model('users', UserSchema)

然后在users.js中进行引入User模型

// users.js
// 引入User模板
const User = require('../../modules/User')

进行引入之后,我们就可以进行接口的设计开发了,我们来设计一个注册接口。因为在注册接口中需要获取到前端传递过来的数据,所以需要安装一个模块koa-bodyparser,在app.js中进行引入和使用。具体的使用方法可以在npm中进行查询,然后查看。

// app.js
const bodyParser = require('koa-bodyparser')

app.use(bodyParser())
// users.js
/**
 * @route POST api/users/register
 * @desc 注册接口地址
 * @access 接口是公开的
 */
router.post('/register', async (ctx) => {
   
  // console.log(ctx.request.body)
  // 存储到数据库里面
  const findResult = await User.find({
    email: ctx.request.body.email })
  if (findResult.length > 0) {
   
    ctx.status = 500
    ctx.body = {
    email: '邮箱已经存在!' }
  } else {
   
    // 没查到
    const newUser = new User({
   
      name: ctx.request.body.name,
      email: ctx.request.body.email,
      password: tools.enbcrypt(ctx.request.body.password),
    })
    // console.log(newUser)
    //   存储到数据库
    await newUser
      .save()
      .then((user) => {
   
        ctx.body = user
      })
      .catch((err) => {
   
        console.log(err
当然可以。以下是使用Node.jsKoa2构建RESTful API服务器的基本步骤: 首先,确保已经安装了Node.js并在终端中创建一个新的项目目录,例如`koa_api_server`。然后,初始化项目并安装必要的依赖: ```bash mkdir koa_api_server cd koa_api_server npm init -y npm install koa koa-router body-parser ``` 接着,创建两个文件:`index.js`作为主入口文件,`routes.js`负责定义API路由。 **index.js** ```javascript // 引入所需模块 const Koa = require('koa'); const app = new Koa(); const Router = require('koa-router'); const bodyParser = require('body-parser'); const cors = require('cors'); // 添加跨域支持 // 初始化中间件 app.use(bodyParser.json()); app.use(cors()); // 允许跨域请求 // 加载路由 const routes = require('./routes'); routes(app); // 将路由挂载到应用上 // 设置错误处理 app.on('error', err => { console.error('Error occurred:', err); }); // 启动服务器 const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server is listening on port ${port}`); }); ``` **routes.js** ```javascript // 导出一个函数来添加路由 exports = module.exports = function (app) { // 创建路由器 const router = new Router(); // GET 请求示例:获取所有用户 router.get('/users', async ctx => { // 想象这是从数据库获取的数据 let users = [{ id: 1, name: 'User1' }, { id: 2, name: 'User2' }]; ctx.body = users; ctx.status = 200; }); // POST 请求示例:创建新的用户 router.post('/users', async ctx => { const newUser = ctx.request.body; // 对用户数据进行验证或存入数据库 if (!newUser.name || !newUser.email) { return ctx.throw(400, 'Invalid user data'); } ctx.body = { id: Date.now(), ...newUser }; ctx.status = 201; }); // 使用app.use()添加路由到应用 app.use(router.routes(), router.allowedMethods()); }; ``` 这个简单的例子包括了基本的GET和POST请求,以及跨域支持。为了持久运行,你可能还需要添加日志记录和错误处理功能。记得根据项目需求对路由进行相应的扩展和错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值