0

我有一个小型节点服务器,我使用框架 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 })
    }
})

不幸的是,我无法调用 URL,get因为 GET url 只能以“/”开头。

我如何通过 fastify 调用第三方 api?我需要延期吗?

4

2 回答 2

2

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

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

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

const got = require('got') // npm install 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 }
})
于 2019-09-02T09:53:16.873 回答
1

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

这是 fastify-http-proxy 中的示例

server.register(require('fastify-http-proxy'), {
  upstream: 'http://my-api.example.com',
  prefix: '/api', // optional
  http2: false // optional
})

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

于 2019-10-17T07:05:02.973 回答