Я бился головой о стену, вокруг которой можно выбрать методы в RestKit, чтобы выполнить то, что я пытаюсь достичь.
Мне дали спецификацию API, которая требует от меня POST и объекта в формате JSON с пользовательским типом MIME, а затем получит обновленное представление JSON этого объекта и десериализует его.
Я попытался просто использовать [[RKObjectManager sharedManager] postObject: customobject Delegate: Handler], однако я не могу заставить его использовать что-либо, кроме кодировки формы.
Затем я попытался [[RKObjectManager sharedManager] objectLoaderForObject:customObject method:RKRequestMethodPost delegate:handler]
и установил тип MIME сериализации на @"application/json"
. Это работает для сериализации объекта как JSON, но не помогает с пользовательским Content-Type.
Используя второй метод, описанный выше, я попытался реализовать сообщение HTTPHeaderValueForContentType
, но это никогда не вызывалось, и объект params является NSDictionary.
Оттуда я попытался добавить пользовательский MIME-тип Parser Registry, используя ту же логику, что и [RKParseRegistry autoconfigure]
, но я чувствую, что с каждым шагом я копаю глубже в область взлома.
Проблема и с этим подходом в том, что он не помогает моему заголовку «Accepts», он все еще «application/json
».
Ниже приведена некоторая спецификация о API REST, который мне нужно использовать (с некоторыми измененными ключевыми словами)
NB: Я добавил это в группу Google RestKit
Request POST /customobject/ HTTP/1.1
Accepts application/vnd.company.customobject-v1+json
application/vnd.company.customobject-v1+xml
Content-Type application/vnd.company.customobject-v1+json
Sample content {
"type" : "type-a",
"direction" : "left",
"listofitems": [
{ "itemnumber": "123"}
]
}
Response HTTP/1.1 201 Created
Content-Type application/json
Location /customobject/[id]