Как не отображать ответ RestKit?

Я использую RestKit для взаимодействия с REST api. Для некоторых действий, таких как HTTP PUT/POST/DELETE, я забочусь только о статусе кода ответа (200, или 500 и т.д.) И не заботятся о данных ответа, хотя API действительно отправляет данные.

Для оценки производительности, есть ли способ настроить RestKit, чтобы избежать сопоставления ответа? Кажется, что если я не создаю дескриптор ответа, я получаю сообщение об ошибке "дескрипторы ответа не соответствуют загруженному ответу"

Ответ 1

Нет, поскольку ошибка говорит о необходимости определения дескриптора ответа. Он не должен быть сложным (он может отображать один элемент данных, например флаг состояния, в NSDictionary).

Не беспокойтесь о производительности, пока у вас нет причин (профилирование показывает проблему).

Тем не менее, самый эффективный способ работы RestKit (во время выполнения) - не иметь нескольких дескрипторов дескрипторов для поиска, поэтому будьте как можно более конкретными с шаблонами путей и ключами.

Ответ 2

Моим решением было просто использовать сопоставление для 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];

Ответ 3

Если вам не нужно сопоставлять данные ответа с объектами или объектами карты для запроса параметров, вам может быть интересно использовать AFHTTPClient, что в любом случае использует RestKit 0.20. Вы можете получить доступ к объекту AFHTTPClient, который использует сам RestKit, поэтому вам не нужно снова настраивать базовый 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
                                              }];