Postmanで自動生成する
Postmanで投げたいリクエストを作成し、以下のCodeボタンを押しSwiftを選択することでHTTPリクエスト周りのコードが自動生成してくれます。(慣れてない言語だとすごくありがたい機能ですね)
request.swift
import Foundation
var semaphore = DispatchSemaphore (value: 0)
let parameters = "{\n \"name\": \"kitanote\",\n \"age\": 32\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "https://test.com/function-1")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
semaphore.signal()
return
}
print(String(data: data, encoding: .utf8)!)
semaphore.signal()
}
task.resume()
semaphore.wait()
コーダブルにする
上のコードままではparametersの値が少々変更しづらいので、プログラムから利用しやすいようにします。Codableに準拠したUserを作成します。
request.swift
public struct User: Codable {
public var name: String
public var age: Int
func jsonData() -> Data {
return try! JSONEncoder().encode(self)
}
func jsonStr() -> String {
let data = jsonData()
return String(data: data, encoding: .utf8)!
}
}
let user = User(name: "kitanote", age: 32)
let postData = user.jsonData()
Data型
Data型はバイト列を表現する構造体で、ファイルの読み書きや通信など、外部システムとデータをやり取りする際に使用します。バイト列はさまざまなデータの表現に使用され、たとえば画像やJSONもバイト列によって表現できます。