我目前正在尝试将Tracker Networks API实施到Xcode项目中。我知道如何使用Node.js和html来做到这一点,但似乎无法在Xcode中使用Swift来解决。
网站说使用获取请求,使用此请求->“ GET https://api.fortnitetracker.com/v1/store”
然后他们说:“要使用我们的API,我们要求您使用API密钥。要使用API密钥,您需要将其作为请求的标头传递。”
这是我的API密钥(伪api密钥): TRN-Api-Key:d93742a5-94d0-482c-8714-23c6660225555
如果有人可以告诉我如何进行设置,这对我来说意义重大。谢谢。
答案 0 :(得分:1)
使用以下示例代码将其添加到标题字段:
if let url = URL(string: "https://api.fortnitetracker.com/v1/store") {
let request = URLRequest(url: url)
request.addValue("d93742a5-94d0-482c-8714-23c6660225555", forHTTPHeaderField: "TRN-Api-Key"
request.httpMethod = "GET"
let dataTask = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in
//handle response here
}
dataTask.resume()
}
答案 1 :(得分:0)
这是一个快速的答案,希望能为您指明正确的方向。
TRN-Api-Key
将是key
,您的API密钥将是该值。看起来像这样。
与Postman进行通话,确保它们可以正常工作,等等。这比通过Xcode设置断点等等进行操作要容易得多。一旦确定,您将知道要拨打的电话正在制作...然后转到Xcode。
一旦您将GET
退回JSON,然后将其剪切并粘贴到类似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?
}
第4步:调查URLComponents
。这就是您创建用于馈送给URLRequests
的URL的方式。
步骤5:制作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
}
或者(也许最好),您可以使用Alamofire之类的网络框架来发出请求。这是Alamofire中的how to customize headers。
这里是how to use the Codable
structs,用于解析来自端点的收益。
这里是使用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()
}