我正在尝试使用客户端上的
.post()
请求向 Vapor 中的外部 API 发出请求。
let payload = TwitchTokenPayload(client_id: client_id,
client_secret: client_secret,
grant_type: "client_credentials")
req.client.post("https://id.twitch.tv/oauth2/token", content: payload)
有效负载正确符合内容协议,但我仍然从 Twitch 收到 400 错误,并表示
missing Client Id
。
我已在 Postman 上设置了相同的请求,并且有效。
我注意到一件事,我不确定这是否是 Vapor 的一个错误,但在客户端文件的
send()
函数中,它们实际上总是传递一个 nil
主体。
var request = ClientRequest(method: method, url: url, headers: headers, body: nil, byteBufferAllocator: self.byteBufferAllocator)
我认为这可能是导致问题的原因。有没有人有其他方法来解决这个问题?或者我应该不使用 Vapor 来实现标准 HTTP 请求?如果是这样的话,这似乎是这个框架的一个主要问题。
还有另一种方法应该可以正常工作
let payload = TwitchTokenPayload(client_id: client_id,
client_secret: client_secret,
grant_type: "client_credentials")
req.client.post("https://id.twitch.tv/oauth2/token") { req in
try req.content.encode(payload, as: .json)
}