如何从iOS应用中的Node.js服务器获取响应? [英] How do i get the response from Node.js server in iOS app?

查看:108
本文介绍了如何从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆