如何在RestKit中为同一个类创build两个后路由

由于我无法弄清楚如何为同一个类设置两个不同的POST资源path,我尝试手动创buildRKObjectLoader请求,但它似乎继续发送一个GET请求,而不是一个POST,即使我已经设置了方法POST。 这是我的代码

User *user = [[User alloc] init]; user.uname = uname; user.pwd = pwd; RKObjectManager *svc = [RKObjectManager sharedManager]; RKObjectMapping* mapping = [svc.mappingProvider objectMappingForClass:[User class]]; // what I was using before I needed two post resource paths//[svc postObject:user mapResponseWith:mapping delegate:self]; RKObjectLoader *loader = [svc loadObjectsAtResourcePath:authResourcePath objectMapping:mapping delegate:self]; [loader setMethod:RKRequestMethodPOST]; loader.userData = [NSNumber numberWithInt:RequestLogin]; loader.params = [NSDictionary dictionaryWithObjectsAndKeys: uname, @"uname", pwd, @"pwd", nil]; [loader setSourceObject:user]; [loader send]; [user release]; 

在有多条POST或PUTpath的情况下,最简单的方法是使用postObject:invocation的块forms,并自己指定目标resourcePath:

 [[RKObjectManager sharedManager] postObject:foo delegate:bar block:^(RKObjectLoader *loader) { loader.resourcePath = @"/my/destinationPath"; }]; 

我们可能会在某个时候引入一个命名的路由概念,这个概念可以让你用名字来区分路由,但是现在它完全基于HTTP动词。

请注意,您不能,也不能在路由器上注册辅助path – 您完全避开辅助path。

为了完成Blake Watters的回答,如果不同的路线需要不同的objectMapping,你需要这样做:

 [[RKObjectManager sharedManager] postObject:query delegate:saveJobQueryHandler block:^(RKObjectLoader* loader) { loader.objectMapping = NEW_MAPPING; loader.resourcePath = @"/other/url"; loader.targetObject = nil; // Important }]; 

有关loader.targetObject = nil的更多信息, 读取sendObject:委托:块: