RestKit 0.2,多种方式进行GET、POST、PUT请求

11

我有点困惑如何使用restkit,似乎有多种方法可以做相同的事情。以前,我很满足于一遍又一遍地摆弄它直到它起作用,但现在他已经改变了框架和使用方式到0.20.x,我花了很多时间将我的代码转换过来,现在又花了更多的时间尝试让它像以前一样工作。我搜索了一些例子和资料,但人们声称可行的那些例子对我并没有多大帮助,所以肯定是有区别的,也许有人能告诉我在获取此数据时以下两种方式的区别(示例1和2会失败,但这是关于restkit github上的问题)。

response.body={
"player": [
 {
  "_id": "50585c86ded998e77a000002"
 }
]
}
[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Player class] pathPattern:@"player/fbid/:fID" method:RKRequestMethodGET]];

获得您的播放器,可以尝试以下代码:

Player *player = [Player new];
player.playerID = 2;
[[RKObjectManager sharedManager] getObject:player path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) 
{
// Request 
} failure:nil];

2.

使用一个类似如下的响应描述器。

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor  responseDescriptorWithMapping:playerWtfMappingIn pathPattern:nil keyPath:@"player" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];

[tempPlayer setFbID:[result objectForKey:@"id"]];

[objectManager getObject:tempPlayer path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
{

}
failure:nil];

3.

实际上,这在RestKit wiki上也有Blake自己的例子。

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:articleMapping pathPattern:nil keyPath:@"articles" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

NSURL URL = [NSURL URLWithString:@"http://restkit.org/articles"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    RKLogInfo(@"Load collection of Articles: %@", objects);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    RKLogError(@"Operation failed with error: %@", error);
}];

[objectRequestOperation start];

我相信还有许多其他的方法,我的猜测是,你应该如何设置路径以及你使用哪种方法,很大程度上取决于你尝试映射的数据集及其格式。但有些方式看起来像是做同一件事情的不同方法?谢谢。


1
到目前为止,这是我遇到的最好的关于如何使用它的简短帖子,让我有点困惑,但仍然很棒 :) - Aran Mulholland
1个回答

5

两种方式都是正确的。实际上,第一种方式甚至更好,因为它将所有配置集中在RKObjectManager中。对于基于RestKit的项目,我强烈建议您使用ObjectManager方式 :)

您甚至可以进一步使用路由来使代码更加简洁,有关该部分的详细信息,请参见wiki :)

希望能帮到您


有没有办法获取 id 是 2,名字是 James 的玩家? - Steven Jiang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接