Swift 使用struct构建端点
我正在构建一个带有常量的Swift 使用struct构建端点,swift,url,struct,Swift,Url,Struct,我正在构建一个带有常量的struct,以形成URL端点 struct Constants { struct Api { static let BaseUrl = "http://srv.com/ws_rest/" static let LoginPassword1 = "credentials?member_account_pwd=" static let LoginUsername2 = "&member_account_logi
struct
,以形成URL
端点
struct Constants {
struct Api {
static let BaseUrl = "http://srv.com/ws_rest/"
static let LoginPassword1 = "credentials?member_account_pwd="
static let LoginUsername2 = "&member_account_login="
static let Login3 = "&channelId=4"
}
}
最终结果是:
let url = URL.baseUrlWith(string: Constants.Api.LoginPassword1 + "pass" + Constants.Api.LoginUsername2 + "user" + Constants.Api.Login3)
这仅适用于一个端点。有人知道更好的实用方法吗?有一个函数可以帮助您
func urlString(with baseURL: String, and parameters: [String: String])->String {
var mutableBaseURL = baseURL
for (i, param) in parameters.enumerated() {
var symbol = "&"
if i == 0 { symbol = "?" }
mutableBaseURL += "\(symbol)\(param.key)=\(param.value)"
}
return mutableBaseURL
}
所以你的常数会变成
struct Constants {
struct Endpoints {
static let login = "http://srv.com/ws_rest/credentials"
}
struct Parameters {
static let username = "member_account_login"
static let password = "member_account_pwd"
static let channelId = "channelId"
}
}
在代码的某个地方,您将拥有
let url = urlString(with: Constants.Endpoints.login, and: [
Constants.Parameters.username: username,
Constants.Parameters.password: pass,
Constants.Parameters.channelId: "4"
])
希望有帮助。这就是我命名静态变量的方式。我想没关系。