0

这是代码,做转发用的,但是ctx.response.body会前端的是404

router.get('/getData', async (ctx, next) => {

  let opts = Object.keys(ctx.query).reduce((pre, item, index) => {
    return pre += `${item}=${encodeURIComponent(ctx.query[item])}&`
  }, '?')
  
  // const getData = await request.get(`https://searchapi.hc360.com/getmmtlast.cgi${opts}`)
  // console.log('getData', getData.query);

  request({
    url: `https://searchapi.hc360.com/getmmtlast.cgi${opts}`,
    method: 'GET',
    encoding: null
  }, function(err, res, data) {
    if (!err && res.statusCode == 200) {
      console.log('data', Iconv.decode(data, 'gbk'));
      ctx.response.body = Iconv.decode(data, 'gbk')
    } else ctx.response.body = err;
  })
  await next();
})
2018-12-07 提问

查看全部 2 个回答

1

已采纳

因为request是一个异步的过程,请求 /getData 时并没有执行到 ctx.response.body ,这里await request的结果赋给ctx

你可能感兴趣的

推广链接