如何通过Fastify调用第三方API数据?

时间:2019-08-30 17:15:09

标签: api fastify

我有一个小型节点服务器,并且使用框架fastify。

在我的一条路线中,我想从第三方API获取数据。

我尝试了以下代码段:

fastify.route({
    method: 'GET',
    url: 'https://demo.api.com/api/v2/project/',
    handler: async function ({ params, body}, reply) {
        if (!body) return reply.send({ sucess: false })

        console.log('testing')
        console.log(body)

        return reply.send({ sucess: true })
    }
})

很遗憾,我无法通过get来调用URL,因为GET URL只能以'/'开头。

我如何通过Fastify调用第三个pari api?我需要扩展吗?

2 个答案:

答案 0 :(得分:1)

如果您需要定义代理另一台服务器的路由(例如http://localhost:3000/),则需要使用fastify-http-proxy

或者,如果您需要调用另一个端点并管理响应,则可以使用fastify.inject()实用程序,但是它是为测试而设计的。

无论如何,我认为最好的方法是使用某些HTTP客户端,例如got

fastify.get('/my-endpoint', async function (request, reply) {
  const response = await got('sindresorhus.com')
  console.log(response.body)
  // DO SOMETHING WITH BODY
  return { sucess: true }
})

答案 1 :(得分:1)

使用固定钩子将您的http请求代理到另一台服务器。

这是fastify-http-proxy

中的示例

$ rsearch -f foo.txt -b bar Searching... Searching... # ... $ rsearch --help Usage: rsearch [OPTIONS] Options: -f, --foo TEXT -b, --bar TEXT --help

https://github.com/fastify/fastify-http-proxy/blob/master/example.js