swift - 映射来自不同文件的 API url Swift 4 (ALAMOFIRE)
问题描述
我在 Swift 中还是新手,我有一个与 api URL 相关的问题。我有 API URL 列表,我将其放置在一个单独的类中,即类 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
实际上代表用户ID,它可以根据用户进行更改。我只是声明为 %s,因为我不知道它实际上应该是什么。我使用 Alamofire 返回数据。下面是我调用 URL 中不需要的 URL 的示例user_id
之一%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 的地方。我不知道如何从 url 替换 %s。下面是我分离 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)"
}
}
}
解决方案
推荐阅读
- c# - 在具有多个连接 EF 的 Linq 查询中计数
- javascript - 如何在 HTML 中获取网络请求 URL 列表(浏览器背景)
- mysql - 需要帮助 MySQL 查询
- trace - 带有 Microprofile OpenTracing 分布式跟踪的 Quarkus 不起作用
- batch-file - 如果子文件夹中的文件被修改,则将文件从一个文件夹复制到另一个文件夹
- windows - Edge-Chromium - 代理服务器的注册表设置无法立即工作
- javascript - 在引导程序中切换时如何获取导航栏的高度?
- maven - 如何在 IntelliJ 中更新环境变量
- sql - 如何在选择查询中获取组的先前记录日期
- javascript - 我追加输入字段,然后我试图在同一个输入上执行触发事件但不工作