使用Koa2+Mongoose创建后台接口

前端也可以写api!
摘要由CSDN通过智能技术生成

Koa介绍

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

以上解释来自官网,简单来说就是Koa是由Express框架的开发人员打造的新的后端框架,使用最新的async/await语法来解决请求异步回调问题。


Koa VS Express

用法

  • Koa:使用async/await语法解决回调问题
  • Express:基于回调,error-first模式

中间件

  • Koa:洋葱模型
  • Express:线性模型

集成

  • Koa:需要自己安装koa-static和koa-router
  • Express:自带static模块和router模块

使用人数

现在来说koa的使用人数比Express还是要少很多的,npm相关的包数量相差也很多。


Koa用法特点讲解

以Koa和Express开启服务器的代码为例:

// koa写法

const Koa = require('koa')
const app = new Koa()

app.use(ctx => {
   
		ctx.body = "hello world!"
	}
)

app.listen(3000)

//Express写法

const Express = require('express')

app.use((req,res,next) => {
   
	res.status(200).send("Hello world").end()
})

app.listen(3000)

上下文对象(Context)

Koa用Context对象取代了Express中的request和response对象,即将节点的请求和响应对象都封装在一个对象中。每个请求都会创建一个Context对象,并在中间件中作为一个默认参数使用:

app.use(async ctx => {
   
	ctx.request; // 代表http request
	ctx.response; // 代表http response
})

常用API

  • response.body:返回给用户的内容
  • response.type:返回内容的类型
  • request.accept:请求所能接受的返回内容的类型
  • ctx.throw:抛出异常,参数是指定的错误码和错误信息
  • ctx.cookie:读写cookie对象
  • ctx.query:返回get请求的格式化后的参数
  • ctx.querystring:返回get请求的参数字符串

中间件(middleware)

Koa中的中间件一般是由async/await来实现(异步操作)的,执行顺序为很像递归操作的洋葱圈模型。中间件之间的互相调用通过next()函数来实现控制权的转交,当中间件不再执行next()函数之后将会返回上级中间件,由后往前顺序执行剩下的内容。相对的,Express的中间件是一个接一个的顺序执行,所以一般会将response写到最后一个中间件里。

相对Express来说,koa更加灵活,由开发者自行决定选择什么样的插件来进行业务代码的构筑。


Mongoose

Mongoose是Node.js用于连接MongoDB的一个库,使用一种模板式的ORM方法来对数据库中的数据进行增删查改操作。

基本概念

  • Schema:相当于数据定义的模板,通过Schema可以定义数据的属性(对应数据库的字段属性)
  • Model:相当于数据的父类,里面有Schema定义的属性和类型内容(对应数据库的一张表?)
  • Instance:实例,在新增的时候会有用,相当于数据表中的一条记录

常用API

  • find():查询操作,可以填入参数进行条件查找,不填则会返回全部数据
  • update():更新操作,对数据库中的某条数据进行更新
  • remove():删除操作,删除数据库中的某条记录
  • save():增加操作,增加一条数据记录,实例方法

示例

const {
    Schema, model } = require("mongoose");

// 定义User Schema
const UserSchema = new Schema({
   
    // 用户名字段
    username: {
   
        type:'String', // 字符串类型
        required: true // 必填
    },
    password: {
   
        type: 'String', // 字符串类型
        required: true  // 必填
    }
})

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值