谁能告诉我,koa request服务器转发为什么前端访问是个404

发布于 2022-09-11 16:02:35 字数 772 浏览 14 评论 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();
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倾城泪 2022-09-18 16:02:35

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

魔法少女 2022-09-18 16:02:35

如果你要是为了学习转发接口的,可以百度查一下
如果是为了解决接口跨域,或者是跨服务请求接口,可以使用koa-server-http-proxy

const proxy = require('koa-server-http-proxy');
app.use(proxy('/api', {
  target: 'https://www.shoujinwang.com/',
  pathRewrite: { '^/api': '/' },
  changeOrigin: true
}))

可以直接针对自定义前缀的接口进行转发

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文