2013-05-22 2 views
1

RestKit을 사용하여 Dropbox API에서 폴더 내용을 가져 오기 위해 RKRoute를 설정하려고합니다."/"를 매개 변수로 사용하는 RKRoute가 작동하지 않습니다.

콘텐츠를 가져 오는 URL은 https://api.dropbox.com/1/metadata/dropbox/<path>입니다. 슬래시의 수는 다음과 같이이 확인되기 때문에 다음

// objectManagers baseURL is @"https://api.dropbox.com/1/" 
RKResponseDescriptor *rootResponse = [RKResponseDescriptor responseDescriptorWithMapping:dynamicMapping pathPattern:@"metadata/dropbox:path" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 
[objectManager.router.routeSet addRoute:[RKRoute routeWithClass:[DropboxFolder class] pathPattern:@"metadata/dropbox:path" method:RKRequestMethodGET]]; 
// dropboxFolder.path is @"/" for root 
// dropboxFolder.path is @"/Images" for the "Images"-folder contained in root 

그러나 [RKPathMather matchesPath:tokenizeQueryStrings:parsedArguments:에서 경로의 실패 일치 : RKNumberOfSlashesInString(self.patternString) == RKNumberOfSlashesInString(self.rootPath)

매핑 작업을

그래서 나는이 같은 응답 경로를 설정 , 나는이 점검을 주석 처리하지만 다른 어떤 경우에는 필요하다고 확신한다.

답변

1

올바른 접근 방식은 2 개의 다른 응답 설명자와 경로를 사용하는 것입니다. RestKit이 다른 URL, 경로 및 패턴을 적절하게 구분할 수 있도록하려면 슬래시가 중요합니다. 동일한 맵핑을 사용할 수 있으므로 구성 라인이 두 줄 밖에 없습니다.

나는이 같은 내 대답 설명 및 경로를 구성 :

RKResponseDescriptor *rootResponse = [RKResponseDescriptor responseDescriptorWithMapping:dynamicMapping pathPattern:@"metadata/dropbox/:path" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 
RKRoute *route = [RKRoute routeWithClass:[DropboxFolder class] pathPattern:@"metadata/dropbox/:path" method:RKRequestMethodGET]; 
route.shouldEscapePath = YES; 
[objectManager.router.routeSet addRoute:route]; 

지금은 1 응답 디스크립터 1 개 경로와 함께 작동

+0

답변 해 주셔서 감사합니다. 'metadata/dropbox : path' 경로 1 개와'metadata/dropbox /'와'metadata/dropbox/: pathWithoutSlash'라는 2 개의 응답 디스크립터를 구성했습니다. 보시다시피, 나는 커스텀 속성 인'pathWithoutSlash'를 구현해야했습니다. 이것은 pathWithoutSlash라는 아름다움과 깨끗한 것은 아닙니다. 하지만 효과가 있습니다. 감사합니다. – Pipo

1

나는 내 문제에 대한 청소기 해결책을 찾은 것 같아요. 이 API가 경로를 사용하여 다른 API와 작동하는지는 모르겠지만 Dropbox와는 다릅니다. (루트 URL은 https://api.dropbox.com/1/metadata/dropbox/%2F입니다.)

관련 문제