在看这个之前还是需要先看文档:
https://eggjs.org/zh-cn/basics/router.html
https://eggjs.org/zh-cn/basics/controller.html
这里我所做的也就是一个文档的搬运工再根据自己的需求整理了一下而已。
在之前的Node.js系列博客中都是用的Express,这次使用Egg.js之后明显感觉简洁多了。
GET请求
参数获取方式一:
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async query() {
const { ctx } = this;
ctx.body = {
query: ctx.query,
id: ctx.query.id,
data: ctx.query.data
}
// http://localhost:7001/query?id=2&data=aa
// {
// "query": {
// "id": "2",
// "data": "aa"
// },
// "id": "2",
// "data": "aa"
// }
}
}
module.exports = HomeController;
路由:
'use strict';
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
router.get('/query', controller.home.query);
};
参数获取方式二:
async params() {
const { ctx } = this;
ctx.body = {
params: ctx.params,
id: ctx.params.id,
data: ctx.params.data
}
// http://localhost:7001/params/2/aa
// {
// "params": {
// "id": "2",
// "data": "aa"
// },
// "id": "2",
// "data": "aa"
// }
};
router.get('/params/:id/:data', controller.home.params);
POST请求
async post() {
const { ctx } = this;
ctx.body = {
post: ctx.request.body,
id: ctx.request.body.id,
data: ctx.request.body.data
}
// http://localhost:7001/post
// {
// "post": {
// "id": "2",
// "data": "aa"
// },
// "id": "2",
// "data": "aa"
// }
};
router.post('/post', controller.home.post);
这里的GET和POST请求其实没什么,主要是要注意下和Express的差异。总体感觉就是使用真的简单。