我刚开始使用 Golang,我想在 Go 中重新制作我已经工作的 NodeJS/TypeScript 应用程序。
我的 API 的一个端点只是添加了服务器端生成的授权标头并将请求发送到远程 API。基本上通过调用我的 API 而不是远程 API 来为我填充这些标题。
这是我目前正在写的
func Endpoint(ctx *fiber.Ctx) error {
url := "https://api.twitch.tv" + ctx.OriginalURL()
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Authorization", "Bearer ---------")
req.Header.Set("Client-Id", "---------")
client := &http.Client{}
res, err := client.Do(req)
// temporary error handling
if err != nil {
log.Fatalln(err)
}
body, err := ioutil.ReadAll(res.Body)
// temporary error handling
if err != nil {
log.Fatalln(err)
}
var forwardedBody interface{}
json.Unmarshal(body, &forwardedBody)
return ctx.Status(fiber.StatusOK).JSON(forwardedBody)
}
我想知道我是否走在正确的步骤上,因为发出请求,使用 ioutil 解析 JSON 响应,然后将其解组以将其发送回来,这对于我想要实现的简单性来说似乎有点过火了?
编辑:谢谢你的帮助,这就是我想要的
func Endpoint(ctx *fiber.Ctx) error {
url := "https://api.twitch.tv" + ctx.OriginalURL()
req, _ := http.NewRequest(http.MethodGet, url, nil)
req.Header.Set("Authorization", "Bearer ---------")
req.Header.Set("Client-ID", "---------")
client := &http.Client{}
res, err := client.Do(req)
if err != nil {
return ctx.SendStatus(fiber.StatusBadRequest)
}
ctx.Set("Content-Type", "application/json; charset=utf-8")
return ctx.Status(res.StatusCode).SendStream(res.Body)
}