我目前正在尝试将 Tracker Networks API 实施到 Xcode 项目中。我知道如何使用 Node.js 和 html 来做到这一点,但 can\xe2\x80\x99t 似乎可以在 Xcode 中使用 Swift 来解决这个问题。
\n\n该网站说要使用此 \xe2\x80\x94> \xe2\x80\x9cGET https://api.fortnitetracker.com/v1/store \xe2\x80\x9d
\n\n然后他们说,\xe2\x80\x9c要使用我们的 API,我们要求您使用 API 密钥。要使用 API 密钥,您需要将其作为请求头传递。\xe2\x80\x9d
\n\n这是我的 API 密钥(假 api 密钥):\nTRN-Api-Key:d93742a5-94d0-482c-8714-23c6660225555
\n\n如果有人可以告诉我如何设置它\xe2\x80\x99d 对我来说意义重大。谢谢。
\n这是一个快速答案,希望能为您指明正确的方向。
TRN-Api-Key将是key,您的 API 密钥将是该值。它会看起来像这样。
尝试使用 Postman 进行调用,确保它们正常工作,等等。这比使用 Xcode 设置断点等要容易得多。一旦你弄清楚了你将要进行什么调用。 ..然后转到 Xcode。
一旦你得到了GETJSON,然后将其剪切并粘贴到https://app.quicktype.io之类的地方。对于我正在使用的示例 URL 中的端点,它为您提供:
struct Response: Codable {
let items: [Item]
}
struct Item: Codable {
let metadata: [Metadatum]
}
struct Metadatum: Codable {
let key: String
let value: String?
}
Run Code Online (Sandbox Code Playgroud)
第 4 步:查看URLComponents. 这就是您创建 URL 以提供给您的URLRequests.
第 5 步:当您 make 时URLRequests,您需要将 API 密钥名称和 API 密钥值转储到标头中。它在文档页面上应该是非常不言自明的。
这是基本的“诗人物理学”代码:
let fortniteChallengesURL = URL(string: "https://api.fortnitetracker.com/v1/challenges")
if let unwrappedURL = fortniteChallengesURL {
var request = URLRequest(url: unwrappedURL)
request.addValue("YOUR API KEY", forHTTPHeaderField: "TRN-Api-Key")
// Make your request and handle the response
}
Run Code Online (Sandbox Code Playgroud)
或者(也许更好),您可以使用像Alamofire这样的网络框架来发出请求。以下是如何在 Alamofire 中自定义标头。
以下是如何使用Codable结构来解析端点的返回。
如果您想将其转储到游乐场,这里是使用 Apple 的“工厂”类的成品。您需要自己的 API 密钥。
struct Response: Codable {
let items: [Item]
}
struct Item: Codable {
let metadata: [Metadatum]
}
struct Metadatum: Codable {
let key: String
let value: String?
}
let fortniteChallengesURL = URL(string: "https://api.fortnitetracker.com/v1/challenges")
if let unwrappedURL = fortniteChallengesURL {
var request = URLRequest(url: unwrappedURL)
request.addValue("YOUR API KEY HERE", forHTTPHeaderField: "TRN-Api-Key")
let dataTask = URLSession.shared.dataTask(with: request) { (data, response, error) in
// you should put in error handling code, too
if let data = data {
do {
let json = try JSONDecoder().decode(Response.self, from: data) as Response
// HERE'S WHERE YOUR DATA IS
print(json.items.count)
} catch {
print(error.localizedDescription)
}
}
}
dataTask.resume()
}
Run Code Online (Sandbox Code Playgroud)