我有一个小型节点服务器,并且使用框架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?我需要扩展吗?
答案 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