2014-05-11 69 views
0

我有一个看起来像这样的请求匹配:RestKit - 路径与查询字符串

/products?page=:page&perPage=:perPage 

我怎样组织我的路径匹配,这样调用

[[RKObjectManager sharedManager] cancelAllObjectRequestOperationsWithMethod:RKRequestMethodGET matchingPathPattern:@"/products"]; 

这时候会发现这些路径似乎不符合这种模式。如何设置我的matchingPathPattern参数以匹配这些请求?

回答

0

我通常会创建命名路线。 Reskit路由器提供了许多不同的帮助器方法,可以通过多种方式简化任务。创建一个名为像这样的路线,

#define ProductsRoute @"ProductsRoute" 

RKRoute *productsRoute = [RKRoute routeWithName:ProductsRoute pathPattern:@"/products?page=:page&perPage=:perPage" method:RKRequestMethodGET]; 

添加到routeSet路线,

[[[RKObjectManager sharedManager].router routeSet] addRoute:productsRoute]; 

现在,让我们创建一个辅助方法,如果涉及到某些命名的路线,将取消该请求的路径,

- (void)cancelRequestToUrlWithRouteName:(NSString*)routeName{ 
RKRoute *route = [[[[RKObjectManager sharedManager] router] routeSet] routeForName:routeName]; 
    [self cancelAllRequestWithMethod:route.method matchingPath:route.pathPattern]; 
} 

然后调用它,每当你想取消请求某些URL,

[self cancelRequestToUrlWithRouteName:ProductsRoute]; 

我希望这也适用于你的情况。 注意我没有显示添加responseManager到objectManager。正如你一直使用的那样,你会添加正常的响应描述符和paginator映射。

+0

您是否尝试过使用URL查询中的参数? SoKit通常不会处理查询部分中的任何参数。 – Wain

+0

@欢雅我不太清楚如何将这个应用于我的案例。有没有办法通配我的取消,这样它将取消对/产品的呼叫,但不会有其他可能未完成的呼叫? –

+0

路径模式通常是通配符,但我认为它不会与查询参数一起使用。 – Wain