前言:
给egg项目中配置路由,并写入接口,提供数据。
实现效果:
一、路由的实现:官方入口
在app底下新建一个router的文件夹,我们这里把本地和线上分为两个路由文件来处理
1、把router.js中的默认文件删除
/**
* 路由配置
* @param app
*/
module.exports = app => {
//--------------------------------------------------
// 根据环境加载路由
//--------------------------------------------------
if(app.config.env === 'prod'){
require('./router/router.prod')(app);
}else{
require('./router/router.local')(app);
}
};
2、在controller下面新建两个文件夹,new,shop,再新建一个common.js,这些都是单独模块+公共模块的路由放的地方
common.js
/**
* 公共路由
* @param app
* @returns {HomeController}
*/
const Controller = require('egg').Controller;
class HomeController extends Controller {
async notFound(ctx){
await ctx.render('404,渲染页面');
}
async fiveCu(ctx){
await ctx.render('333333333');
}
}
module.exports = HomeController;
shop/index
/**
* 购物
* @param app
* @returns {HomeController}
*/
const Controller = require('egg').Controller;
class HomeController extends Controller {
async list() {
const { ctx } = this;
ctx.body = 'hi, egg';
}
}
module.exports = HomeController;
3、router.local.js,线上的可以和本地一样,根据实际情况来
/**
* 路由配置
* @param app
*/
module.exports = app => {
const { router, controller } = app;
//--------------------------------------------------
// 基础接口
//--------------------------------------------------
app.get('/', controller.shop.index.list);
app.get('/404', controller.common.notFound);
app.get('/500', controller.common.fiveCu);
};
到这一步实现效果:
二、后台接口的实现:
1、get请求,打开刚刚建立的 new/list.js
//app/controller/news.js
const Controller = require('egg').Controller;
class NewsController extends Controller {
async list() {
const dataList = await this.other();
this.ctx.body = {
code:0,
masg:'news list success',
data:dataList
};
}
async other() {
return {
list: [
{ id: 1, title: 'this is news 1', url: '/news/1' },
{ id: 2, title: 'this is news 2', url: '/news/2' }
]
}
}
}
module.exports = NewsController;
2、打开router.local.js,加上路由 app.get('/list', controller.new.list.list);
/**
* 路由配置
* @param app
*/
module.exports = app => {
const { router, controller } = app;
//--------------------------------------------------
// 基础接口
//--------------------------------------------------
app.get('/', controller.shop.index.list);
app.get('/list', controller.new.list.list); //加入
app.get('/404', controller.common.notFound);
app.get('/500', controller.common.fiveCu);
};