RestKit — неверное содержимое тела POST-запроса

#json #restkit #restkit-0.20

#json #restkit #restkit-0.20

Вопрос:

Я пытаюсь выполнить POST следующий JSON, используя [RKObjectManager sharedManager] postObject метод:

 {
   "SerialNumber":"123XYZ"
}
 

Но мой веб-сервис получает:

 {
   "docs/:docId/serials":{"SerialNumber":"123XYZ"}
} 
 

Где "docs/:docId/serials" находится path параметр, который я передаю в [RKObjectManager sharedManager] postObject метод, указывающий путь, необходимый для моего метода веб-службы.

Кто-нибудь знает, почему эти дополнительные данные пути включены в публикуемое содержимое тела?

Сопоставление из моего класса на основе NSObject, похоже, работает нормально, правильный серийный номер передается в JSON. Я настроил RKObjectManager на использование MIME-типа JSON для запросов, используя следующий код, было бы ничего не поделать, не так ли?

 objectManager.requestSerializationMIMEType = RKMIMETypeJSON;
 

Любые подсказки будут высоко оценены, и я с радостью опубликую больше кода, если это необходимо.

Заранее спасибо.

Ответ №1:

Ах, естественно, через 5 минут после публикации этого я выяснил относительно очевидную причину этой проблемы.

При настройке my RKRequestDescriptor для этой операции я передавал путь к своему методу веб-службы в rootKeyPath параметре, думая, что RestKit это нужно, чтобы действовать как ключ, чтобы найти этот дескриптор при postObject последующем вызове метода.

Однако, когда я удалил путь к веб-службе из rootKeyPath параметра, он также исчез из POST тела.

 RKRequestDescriptor *addSerialRequestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:addSerialRequestMapping objectClass:[Serial class] rootKeyPath:nil method:RKRequestMethodPOST];
 

Теперь я понимаю, что получал параметр rootKeyPath в RKRequestDescriptor requestDescriptorWithMapping: методе, смешанный с параметром pathPattern в RKResponseDescriptor responseDescriptorWithMapping: методе, который (как я понимаю, RestKit) должен содержать путь к методу веб-службы, переданному в него.

Надеюсь, однажды это может помочь кому-то еще, и приношу извинения за то, что потратил время всех остальных!