Спасибо, что посмотрели на мой вопрос. Я вхожу в точку. Я должен обновить токен JWT, используя Alamofire Swift. Срок действия токена истекает каждые 30 минут, поэтому, пока я выполняю запрос POST или GET, срок действия токена может истечь и он достигает кода ошибки (кода состояния) 500. Затем я должен вызвать API обновления токена и получить новый токен с сервера, а затем снова вызвать предыдущий API , Моя проблема заключается в том, как я могу перезвонить сбой API после получения нового токена. Надежда может помочь кому-то в этом с лучшим решением. Заранее спасибо.
текущий статус.
метод запроса API,
func statusStaffCheckInOut(completion: @escaping(Bool)->Void){
guard let userID= userLoginModel.user?.id else{ return }
guard let jwtToken = userLoginModel.jwt else{ return }
let x_headers = ["x-authorization": "\(jwtToken)","id":"\(userID)"]
Alamofire.request("\(BASE_MIDDLEWARE_URL)/url",method: .get, encoding: JSONEncoding.default , headers: x_headers).validate(statusCode: 200..<300)
.validate(contentType: ["application/json"]).responseJSON { response in
// print("Request: \(String(describing: response.request))")
// response serialization result
if let json = response.result.value as? [String:Any]{
userLoginModel.staffcheckincheckout?.setValuesForKeys(json)
completion(true)
}else {
if let statusCode = response.response?.statusCode{
print("status code \(statusCode)")
if statusCode == 500{ ///Check 500 Error code
print("Status code ***\(500)***")
///Refresh taken call
self.refreshJWTToken(trigeredURL: "url"){(response) in
}
}
}
completion(false)
}
}
}
Обновить токен Метод:
//MARK:- Token Refresh
func refreshJWTToken(trigeredURL: String,completion: @escaping([[String:Any]],Bool)->Void){
guard let userID = userLoginModel.user?.id else{ return }
let url = "\(BASE_MIDDLEWARE_URL)/url?id=\(userID)"
Alamofire.request(url,method: .get, encoding: JSONEncoding.default).validate(statusCode: 200..<300)
.validate(contentType: ["application/json"]).responseJSON { response in
if let json = response.result.value as? String{
userLoginModel.jwt = json
print("Refreshed JWT: \(json)")
completion([["Message":"Success"]],true)
}else {
completion([["Message":"Faild"]],false)
}
}
}