【发布时间】:2017-07-10 08:01:40
【问题描述】:
我正在尝试进行 Firebase 云函数调用,该调用传递一个参数,该参数是特定 url 的字符串表示形式。在大多数情况下,我的 Cloud Function 使用 var somePath = req.query.somePath; 获取参数,并使用这些变量执行我想要的所有逻辑。但是,该 url 包含 ? 和 & 符号,我认为这可能会让 Alamofire 误以为 & 后面的数据是它自己传递的参数。
我的尝试
let somePath = "https://www.somewebsite.com/someSubpath?firstID=firstValue&someID=someValue"
let url = "https://us-central1-[myProjectName].cloudfunctions.net/myfunction?somePath=" + somePath + "&someData=" + someData
Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON {
response in
print("original URL request")
print(response.request as Any) // original URL request
print("URL response")
print(response.response as Any) // URL response
print(response.response?.statusCode ?? "response.response?.statusCode is nil")
}
我猜somePath 中的& 导致someID 被视为另一个参数,所以我的
云函数认为somePath =
https://www.somewebsite.com/someSubpath?firstID=firstValue
但应该是=
https://www.somewebsite.com/someSubpath?firstID=firstValue&someID=someValue
考虑到这个猜测,然后我尝试了 改变:
Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON {
收件人:
Alamofire.request(url, method: .post, parameters: ["somePath": somePath ?? ""], encoding: JSONEncoding.default, headers: nil).responseJSON {
但这只是导致了另一个错误,somePath 没有作为参数传递。
有谁知道我如何防止somePath 被拆分,尽管其中有? 和&?
【问题讨论】:
标签: node.js swift firebase alamofire google-cloud-functions