什么是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}`)
安装中间件 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和方法(如:GET
、 POST
、 PUT
、 DELETE
等) 匹配到对应的响应程序或页面。
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 = '叫我詹躲躲';
})
新建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
测试一下
安装中间件 koa2-cors
cors跨域资源共享是一种机制,用来允许不同源服务器上的指定资源可以被特定的Web应用访问