나는 params를 사용하여 요청을 게시하고 토큰을 받고 같은 매개 변수를 사용하여 같은 요청을 게시하려고한다고 생각 했는가? 미안하지만 거기에 논리가 없다.하지만 정말로 당신이하고 싶은 것이 있다면, 두 번이나 요청을해야하고 응답 할 때, 토큰 변수에 적절한 응답을 저장해야한다.
Buut .. 어쨌든 params (로그인 및 비밀번호)가 정확하고 저장하는 것보다 토큰을 받기를 원하는 경우 다음과 같이 할 수 있습니다 (서버의 응답이 JSON이기도 한 것으로 가정).
로그인 요청 :
let token = UserDefaults.standard.value(forKey: preferencesKeys.loginToken)
let headers: HTTPHeaders = ["Authorization": "token \(token!)"]
RestService.shared.almgr.request(urlStr, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
switch response.result {
case .success:
//response received
case .failure(let error):
//problems
}
:
func loginRestt(login:String, password:String){
let urlStr = "https://mastleadership.com/api/token-auth"
let params = ["login":login, "password":password]
let headers: HTTPHeaders = ["Content-Type": "application/json"]
Alamofire.request(urlStr, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
switch response.result {
case .success:
print("\(self.TAG), receiving response from login with \(response)")
guard let receivedResponse = try! JSONSerialization.jsonObject(with: response.data!, options: []) as? [String:Any] else {
print("\(self.TAG), Error parsing response from login for json")
return
}
//Here I get token and save it to preferences
if let token:String = receivedResponse["token"] as? String {
print("\(self.TAG), \(token)")
UserDefaults.standard.set(token, forKey: preferencesKeys.loginToken)
} else {
print("\(self.TAG), error receiving token")
return
}
case .failure(let error):
print("\(self.TAG), error receiving response for login with \(error)")
return
}
}
}
그리고 토큰 그냥 예에서와 같이 헤더에 토큰을 추가 할 필요가 다른 요청보다