मैं MoyaAlamofire के शीर्ष पर निर्मित नेटवर्किंग परत के लिए स्विफ्ट फ्रेमवर्क का उपयोग कर रहा हूं।मोया/अलामोफायर - यूआरएल एन्कोडेड पैराम्स एक ही कुंजी के साथ
वर्तमान में, मैं यूआरएल एन्कोडेड पैरामीटर के साथ अनुरोध भेजने की कोशिश कर रहा हूं जिसमें एक ही कुंजी है।
अर्थात http://some-site/request?param=v1¶m=v2¶m=v3
मैं पहले से ही समूह के लिए कोशिश की है इस तरह कुछ भी नहीं है लेकिन सेट या NSSet या सरणी में इन पैरामीटर वांछित परिणाम प्राप्त करने में मदद करता है।
["param": ["v1", "v2", "v3"]];
["param": Set(arrayLiteral: "v1", "v2", "v3")]
कोई मदद या तो मोया के साथ या Alamofire के साथ ही की सराहना की जाएगी।
संपादित करें:
एपीआई रूटर सेटअप
import Moya
// MARK:- Enum Declaration
enum ApiRouter {
case XAuth(login: String, password: String)
case SomeRequest(params: [String])
}
// MARK:- Moya Path
extension ApiRouter: MoyaPath {
var path: String {
switch self {
case .XAuth:
return "/authorization"
case .SomeRequest:
return "/some-request"
}
}
}
// MARK:- Moya Target
extension ApiRouter: MoyaTarget {
private var base: String {
return "http://some-site"
}
var baseURL: NSURL {
return NSURL(string: base)!
}
var parameters: [String: AnyObject] {
switch self {
case .XAuth(let login, let password):
return [
"email": login,
"password": password
]
case .SomeRequest(let params):
return [
"params": params
]
}
var method: Moya.Method {
switch self {
case .XAuth:
return .POST
case .SomeRequest,
return .GET
}
}
var sampleData: NSData {
switch self {
case .XAuth:
return "{}".dataUsingEncoding(NSUTF8StringEncoding)
case .ServiceRequests:
return "{}".dataUsingEncoding(NSUTF8StringEncoding)
}
}
}
एपीआई प्रदाता सेटअप
let endpointsClosure = { (target: ApiRouter) -> Endpoint<ApiRouter> in
let endpoint = Endpoint<ApiRouter>(
URL: target.baseURL.URLByAppendingPathComponent(target.path).absoluteString!,
sampleResponse: EndpointSampleResponse.Success(200, { target.sampleData }),
method: target.method,
parameters: target.parameters,
parameterEncoding: parameterEncoding(target)
)
switch target {
case .XAuth:
return endpoint
default:
let token = "some-token"
return endpoint.endpointByAddingHTTPHeaderFields(["Authorization": "Bearer: \(token)"])
}
}
func parameterEncoding(target: ApiRouter) -> Moya.ParameterEncoding {
switch target {
case .XAuth:
return .JSON
case .SomeRequest:
return .URL
}
}
let apiProvider = MoyaProvider(endpointsClosure: endpointsClosure)
apiProvider.request(ApiRouter.SomeRequest(params: ["v1", "v2", "v3"], completion: { (data, statusCode, response, error) in
/* ... */
})
धन्यवाद: यहाँ मूल विचार देने के लिए कुछ नमूना कोड है।
आप कृपया स्पष्ट करें कर सकते हैं, अपने एपीआई है "GET "या" पोस्ट "? –
@ सोहिलआर.मोमन इसे अनुरोध प्राप्त है –
क्या आप कुछ कोड पोस्ट कर सकते हैं? –