前端请求接口,koa转发请求到后台,koa如何将接口数据返回给前端???? server.js如下: const Koa = require(‘koa’); const router = require(‘koa-router’)(); var ctrl = require(’./server/controller.js’); const app = new Koa(); app.use(require(‘kcors’)()); app.use(async (ctx, next) => { await next(); }); router.get(’/list’,ctrl.goods); controller.js如下: var request = require(‘superagent’); class indexController { static async goods(ctx, next) { request.get(“https://cnodejs.org/api/v1/topics”).then(function(res){ console.log(res.body); if(res.ok){ if(res.body.success){ ctx.body = res.body; } } }); } } module.exports = indexController; 执行后,可以console.log打印处结果,但是ctx.body不起作用,而且路由那报404,如果不用request请求接口,直接写个ctx.body=1,是可以访问的
好歹也格式化一下代码吧
request请求是异步的,所以没有结果返回,你可以在request前加上await等待请求完成后再返回结果
var request = require('superagent');
class indexController {
static async goods(ctx, next) {
var res = await request.get('https://cnodejs.org/api/v1/topics');
if(res && res.ok && res.body.success){
ctx.body = res.body;
}
}
}
module.exports = indexController;
@lbchuan 谢谢
我觉得还是格式化代码一下比较好。。
来自酷炫的 CNodeMD