Alamofire的新手,我想我已经掌握了一些基础知识,但我在努力解决一件事。它与通常的异步调用和闭包有关。
该服务与每个请求服务令牌的问题进行交互。
工作流程就像... ...
- (Log in service) -> Auth ticket --- (Request token service)(supply auth ticket) -> Service request token ------ ([some app service] (supply service request token) -> do stuff
服务请求令牌对一个且仅一个请求有效。每个单独的应用服务请求都需要我获得一个新令牌。
我理解如何制作单一身份验证票,我可以获得生成的单个请求令牌,但是 - 从那里我很难挣扎。对于给定的应用服务电话(让我们说"搜索"),我是否需要在搜索服务请求方法本身内请求新的服务请求令牌(并为每个应用程序起泡,冲洗,重复服务)?
像...一样的东西。
//search function
func getSearchResults(
searchParams: [String:AnyObject] ,
completionHandler: (Result<[SearchResult], NSError>, String?) -> Void) {
//go ahead and get a ticket
APIManager.ticketClient.getServiceTicket({ (serviceTicketResult) -> Void in
var params = searchParams
params["ticket"] = serviceTicketResult.value
//run the search request
Alamofire.request(.GET, requestURI, parameters: params, headers: headers)
.validate()
.responseString { response in....
或者有没有办法可以抽象出重复的请求/响应以获取令牌并将其合并到路由器之类的某个地方?
我关注示例API Abstraction,我想知道我是否能以某种方式请求路由器内的服务票证?
let URL = NSURL(string: Router.baseURLString)!
let URLRequest = NSURLRequest(URL: URL.URLByAppendingPathComponent(result.path))
let encoding = Alamofire.ParameterEncoding.URL
//do magical stuff to get request ticket and jam it into result.parameters?
return encoding.encode(URLRequest, parameters: result.parameters).0
这只是接近它的错误方法吗?老实说,如果没有在票证授予服务请求中明确设置返回类型,我甚至不确定如何做到这一点。试图围绕如何在Alamofire中思考。
任何建议非常感谢