我有一个正在运行的 Vapor 服务器,并且我正在尝试使用不记名令牌身份验证。我能够登录并获得令牌作为响应。在 Postman 中,我可以使用令牌值来验证我的路线并接收正确的响应(Resident 数组)。在我的应用程序中,我使用新的令牌值,并将身份验证设置为 Bearer,但收到 401 响应。 Postman 在我的应用程序中缺少的 HTTP 请求中放入了什么?
这是我的应用程序 HTTP 请求函数:
func getResidents() async throws -> [Resident] {
let session = URLSession.shared
var request = URLRequest(url: URL(string: "\(API.url)/residents")!)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("Bearer \(token?.value)", forHTTPHeaderField: "Authorization")
// Make the request
let (data, response) = try await session.data(for: request)
print(response)
// Ensure we had a good response (status 200)
guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else {
throw GetResidentsError.unableToGetResidents
}
print(httpResponse.statusCode)
let decoder = JSONDecoder()
let residents = try decoder.decode([Resident].self, from: data)
print(residents)
return residents
}
这是我的邮差获取带有不记名身份验证的请求:
Larme的回应让我找到了答案。根据要求打印输出是:
可选([“Content-Type”:“application/json”,“授权”:“承载可选(“2Qo8hWuzbmNu2EImpeXDYQ==”)“])
在将令牌值放入标头之前,我没有解开可选内容。打开包装后我的请求成功了。
谢谢!