如何从iOS应用中的Node.js服务器获取响应? [英] How do i get the response from Node.js server in iOS app?
本文介绍了如何从iOS应用中的Node.js服务器获取响应?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Node.js服务器,当用户登录时,该服务器发送JWT(JSON Web令牌)作为响应.如何在我的Swift 4 iOS应用中获取响应?
I have a Node.js server that sends JWT(JSON Web Token) as response, when user logs in. How do I get the response in my Swift 4, iOS app?
func handleLogin() {
guard let username = usernameTextField.text, let password =
passwordTextField.text else {
print("Invalid form")
return
}
guard let url = URL(string: "http://localhost:3000/users/authenticate")
else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let authUser = Login(username: username, password: password)
do {
let jsonBody = try JSONEncoder().encode(authUser)
request.httpBody = jsonBody
} catch {}
let session = URLSession.shared
let task = session.dataTask(with: request)
task.resume()
}
它将用户名和密码发送到服务器,但是从这里如何获得响应?响应是一个JWT令牌,我如何以及在哪里存储它?
It sends the username and password to the server, but what do I do from here to get the response? The response is a JWT token, and how and where do i store it?
这是结构.
struct Login: Encodable {
let username: String
let password: String
}
struct User: Decodable {
let id: Int
let username: String
let email: String
}
struct Response: Decodable {
let token: String
let user: User
}
推荐答案
let session = URLSession.shared
let task = session.dataTask(with: request) { (data, _, _) in
guard let data = data else { return }
do {
let _ = try JSONDecoder().decode(Response.self, from: data)
} catch {
print(String(data: data, encoding: .utf8)!)
}
}
task.resume()
这篇关于如何从iOS应用中的Node.js服务器获取响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文