Как не отображать ответ 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
}];