如何在 Xcode 中使用带有 api 密钥的 api?

4 api ios swift

我目前正在尝试将 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

Adr*_*ian 5

这是一个快速答案,希望能为您指明正确的方向。

  • 第1步:下载邮递员
  • 第 2 步:打开 Postman,将您的 url 粘贴到 GET 字段中
  • 步骤 3:单击“标题”选项卡。

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)