URL сопоставления API из разных файлов Swift 4 (ALAMOFIRE) - PullRequest
0 голосов
/ 18 мая 2018

Я все еще новичок в Swift, у меня проблема с URL API.У меня есть список URL API, где я помещаю в отдельный класс, который является класс ServerApi.Причина в том, что мне легче изменить URL-адрес, если это необходимо, поскольку он уже помещен в один файл.код выглядит следующим образом:

class ServerApi {

private static let BASE_URL = "http://myurl";

static var API_LOGIN = BASE_URL + "/auth/local";
static var API_SIGNUP = BASE_URL + "/auth/local/register"
static var API_PLACE = BASE_URL + "/place"
static var API_ONE_PLACE = BASE_URL + "/place/%s"
static var API_IMAGE = BASE_URL + "/%s"

private static let URL_PATH = "http://myurl2";

static var URL_CREATE_WALLET = URL_PATH + "/wallet";
static var URL_RELOAD_WALLET = URL_PATH + "/wallet/%s/reload";
static var URL_PAYMENT = URL_PATH + "/wallet/%s/payment";
static var URL_WALLET_ACCOUNT = URL_PATH + "/wallet/%s";
static var URL_USER_TRANSACTION = URL_PATH + "/wallet/%s/transactions";
static var URL_ORDER = URL_PATH + "/orders";
static var URL_CABINET = URL_PATH + "/cabinets/%s";
static var URL_CREATE_PAYMENT = URL_PATH + "/payments";
static var URL_IMAGE = URL_PATH + "/payments";

} 

%s фактически обозначает идентификатор пользователя, где он может изменяться в зависимости от пользователя.я просто заявляю как% s, потому что я понятия не имею, что на самом деле должно быть.Я использую Alamofire, чтобы вернуть данные.Ниже приведен один из примеров, где я вызываю URL, который не нуждается в user_id, который в URL-адресе равен %s:

        Alamofire.request(ServerApi.API_LOGIN, method: .post, parameters: parameters, encoding: URLEncoding.default).validate(statusCode: 200..<300).responseJSON { response in


        if (response.result.isSuccess){

            if let value = response.result.value {
                print(value)

                Helper.helper.switchToViewController(Navigation: "mainVC")

                let dataObject:Dictionary = value as! Dictionary<String, Any>
                print(dataObject)

                let balanceObject:String = dataObject["jwt"] as! String
                print ("balance object of jwt is : \(balanceObject)")
                UserDefaults.standard.setValue(value: balanceObject, key: "jwt")

                print(UserDefaults.standard.getValue(key: "jwt"))

            } else {}

Итак, если в качестве примера я хочу вызвать URL_WALLET_ACCOUNT там, где это необходимо user_id (%s) для завершения URL.я не знаю, как заменить% s из URL.Ниже приведен предыдущий код, прежде чем я разделю список URL

 let user_id = "123456"
 func viewBalance() {

    Alamofire.request ("http://myurl2/wallet/\(user_id)").responseJSON { response in
        print (response)
        if let balanceJSON = response.result.value {

            let dataObject:Dictionary = balanceJSON as! Dictionary<String, Any>
            print(dataObject)

            let balanceObject:Dictionary = dataObject["data"] as! Dictionary<String, Any>
            let balance:String = balanceObject["account_balance_display"] as! String
            let newBalance = balance.dropFirst(2)
            self.balanceLabel.text = "\(newBalance)"
        }
    }
}
...