当前位置: 首页 > 后端技术 > Node.js

Node+koa实现数据mock

时间:2023-04-03 18:41:53 Node.js

基于node+koa实现的mock数据接口,Koa要求node版本在v7.6.0以上,请升级此版本之前的node目录结构//server.jsconstKoa=require('koa');constRouter=require('koa-router');constqs=require('qs');constassert=require('assert');constapp=newKoa();constrouter=newRouter();/***获取列表数据*@param{request}页面页码*@param{request}每页限制数据项数*@param{response}errno返回状态码0==>返回成功1==>错误*@param{response}hasMore是否有更多数据*/letlistData=require('./mock/list/list.js');router.get('/api/getlist/:page/:limit',function(ctx,next){constpage=ctx.params.page;constlimit=ctx.params.limit;constmaxPage=listData.length/limit;//构造返回对象letres={errno:0,data:{hasMore:true,data:[]}};//如果超过最大页数if((page*1+1)>=maxPage){res.data.hasMore=false;}res.data.data=listData.slice(page*limit,页面*限制+限制);ctx.body=res;});/***获取详细数据*@param{request}id商品id*/constdetailData=require('./mock/detail/detail.js');router.get('/api/getdetail/:id',function(ctx,next){constid=ctx.params.idletres={errno:0,data:{data:[]}}res.data.data=detailData;//todo...ctx.body=res;});/***提交评论*@param{request}id用户id*@param{request}uid商品id*@param{request}msg评论内容*/router.post('/api/comment',function(ctx,next){constparams=qs.parse(ctx.req._parsedUrl.query);constid=params.id;constuid=params.uid;constmsg=params.msg;if(id===undefined||uid===undefined||msg===undefined){ctx.body={errno:1,msg:'缺少参数'}}else{//todo...ctx.body={errno:0,msg:'评论成功'}}});app.use(router.routes()).use(router.allowedMethods());app.listen(3000);console.log("服务器运行在http://localhost:3000/");在实际项目中,调用接口会遇到跨域问题,解决方法有很多,这里介绍如何配置module.exports={...devServer:{inwebpackproxy:{//代理以`/api`开头的http请求到`localhost:3000`,mock数据由koa'/api'提供:{target:'http://localhost:3000',secure:false}}...}}项目地址:https://github.com/daijingfeng/mock-server喜欢的话给个star吧