🐶
【Swift】POST した JSON をそのまま受け取って嬉しがる
基本的なこととして。
- JSON を Data 経由で POST する。(JSONEncoder)
- リクエストヘッダーを追加。
- 受け取った Data を struct インスタンスに。(JSONDecorder)
struct User: Codable {
var name: String
var age: Int
}
struct Anything: Codable {
var json: User
}
extension URLSession {
func postUser() async -> User? {
do {
let session = self
let url = URL(string: "https://httpbin.org/anything/{anything}")!
let user = User(name: "John", age: 18)
var request = URLRequest(url: url)
//request.setValue("Bearer 123456ABC", forHTTPHeaderField: "Authorization")
//request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = try JSONEncoder().encode(user)
//let (data, response) = try await session.data(from: url)
let (data, response) = try await session.data(for: request)
print((response as! HTTPURLResponse).statusCode)
//print(String(data: data, encoding: .utf8)!)
let receivedUser = (try JSONDecoder().decode(Anything.self, from: data)).json
return receivedUser
} catch {
return nil
}
}
}
REST すべてのベースとなると思うので。
ここから派生していけばいい。
🧑🏻💻 参考
Discussion