Alamofire - 按请求授权令牌 - 不确定如何处理它

时间:2016-03-16 01:26:58

标签: swift alamofire

Alamofire的新手,我想我已经掌握了一些基础知识,但我在努力解决一件事。它与通常的异步调用和闭包有关。

该服务与每个请求服务令牌的问题进行交互。

  • 您将获得一般用户票证(24小时有效)
  • 然后,您使用该用户票证为每个请求请求新的服务票证

工作流程就像... ...

 - (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中思考。

任何建议非常感谢

0 个答案:

没有答案