지금 당장 나는 코드에 대한 엄청난 리팩토링을하고 있으며 Restkit을 사용하는 방식을 통일하고 싶습니다. API 서버와 REST 호출에 RPC 호출을하는 방법을 구분했습니다.RKParams로 API에 게시하고 RestKit을 사용하여 RKObjectMapping으로 응답 매핑하기
REST는 RKClient를 사용하여 만든 objectMapping 및 RPC 호출을 사용하여 호출합니다. 게다가 위임자 대신 블록을 사용하고 있는데 위대한 방법이지만 작동 방식에 대한 의문점이 있습니다.
다음은 객체를 게시하고 대리인을 사용하여 수동으로 매핑을 수행 한 후 params를 전송하지 않는 블록을 사용하는 새 코드입니다.
//This was the old way...
- (void) upload: (KFMedia *) pic {
RKParams* imageParams = [RKParams params];
NSData* imageData = UIImageJPEGRepresentation(pic.image, 0.7f);
[imageParams setData:imageData MIMEType:@"image/jpg" forParam:@"FileUpload"];
[[RKClient sharedClient] post:@"/api/upload/" params:imageParams delegate:self];
}
//This is the new way I'm trying...
- (void) upload: (KFMedia *) pic onLoad:(RKObjectLoaderDidLoadObjectBlock) loadBlock onError:(RKRequestDidFailLoadWithErrorBlock)failBlock{
RKParams* imageParams = [RKParams params];
NSData* imageData = UIImageJPEGRepresentation(pic.image, 0.7f);
[imageParams setData:imageData MIMEType:@"image/jpg" forParam:@"FileUpload"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/api/upload/" usingBlock:^(RKObjectLoader *loader) {
//Trying to set params here, but it seems that I'm not sending anything :(
loader.params = imageParams;
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[KFMedia class]];
loader.delegate = self;
loader.onDidLoadObject = loadBlock;
loader.onDidFailWithError = failBlock;
loader.onDidFailLoadWithError = failBlock;
loader.onDidLoadResponse = ^(RKResponse *response) {
[self fireErrorBlock:failBlock onErrorInResponse:response];
};
}];
}
보내려는 요청에는 본문이 비어 있습니다. 즉, 매개 변수가 보내지 않거나 제대로 설정되지 않았다는 의미입니다. 이 방법을 사용하는 방법에 대한 아이디어가 있습니까?