如何不映射RestKit响应?

yic*_*hen 11 restkit restkit-0.20

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

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

dee*_*ter 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];
Run Code Online (Sandbox Code Playgroud)

  • 请改用[NSNull类],这应该删除警告 (7认同)

nio*_*ioq 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
                                              }];
Run Code Online (Sandbox Code Playgroud)


Wai*_*ain 5

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

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

也就是说,RestKit最有效的运行方式(在运行时)是没有多个响应描述符来搜索,所以尽可能使用路径模式和键路径.