11

我使用 RestKit 与 REST api 交互。对于某些操作,例如 HTTP PUT/POST/DELETE,我只关心响应状态代码(200 或 500 等),而不关心响应数据,即使 API 确实发回了数据。

出于性能考虑,有没有办法配置 RestKit 以避免映射响应?似乎如果我没有设置响应描述符,我会收到错误“没有响应描述符与加载的响应匹配”

4

3 回答 3

20

我的解决方案只是使用 NSObject 的映射

RKObjectMapping * emptyMapping = [RKObjectMapping mappingForClass:[NSObject class]];
RKResponseDescriptor * responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:emptyMapping
                                                                                         method:RKRequestMethodPOST
                                                                                    pathPattern:API_SURVEY_UPLOAD keyPath:nil
                                                                                    statusCodes:[NSIndexSet indexSetWithIndex:200]];
[objectManager addResponseDescriptor:responseDescriptor];
于 2013-09-19T04:06:24.607 回答
8

如果您不需要将响应数据映射到对象,也不需要将对象映射到请求参数,您可能会对使用 AFHTTPClient 感兴趣,这正是 RestKit 0.20 所使用的。您可以访问 RestKit 本身使用的 AFHTTPClient 对象,因此您不必自己重新设置基本 URL 或身份验证标头等。

这是一个简单的 GET 示例:

[[[RKObjectManager sharedManager] HTTPClient] getPath:@"http://example.com"
                                           parameters:nil
                                              success:^(AFHTTPRequestOperation *operation, id responseObject) {
                                                  // handle success
                                              }
                                              failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                                  // response code is in operation.response.statusCode
                                              }];
于 2013-05-14T03:34:15.133 回答
5

不,因为错误表明您需要定义一些响应描述符。它不需要很复杂(它可以将单个数据项(如状态标志)映射到 NSDictionary 中)。

在你有理由之前不要担心性能(分析显示有问题)。

也就是说,RestKit 最有效的操作方式(在运行时)是没有多个响应描述符来搜索,因此尽可能具体地使用路径模式和键路径。

于 2013-05-12T06:11:28.600 回答