1

我的宁静 API:

GET http://example.com/articles
GET http://example.com/articles/:id
...

这是我的描述符设置:

RKResponseDescriptor *responseDescriptorArticleList = [RKResponseDescriptor
                                responseDescriptorWithMapping:articleMapping
                                method:RKRequestMethodGET
                                pathPattern:@"/articles"
                                keyPath:@nil     
                                statusCodes:[NSIndexSet indexSetWithIndex:200]];


RKResponseDescriptor *responseDescriptorArticle = [RKResponseDescriptor
                               responseDescriptorWithMapping:articleMapping
                               method:RKRequestMethodGET
                               pathPattern:@"/articles/:id"
                               keyPath:nil
                               statusCodes:[NSIndexSet indexSetWithIndex:200]];

(GET) http://example.com/articles的功能有效

[objectManager getObjectsAtPath:@"/articles"
                    parameters:nil
                    success:^sucess{...} failure:^failue{...}];

(GET) http://example.com/articles/:id的功能不起作用

//Whatever Object is article object or article.id, it doesn't work
[objectManager getObject:Object path:@"/articles/:id"
                    parameters:nil 
                    success:^sucess{...} failure:^failue{...}];

服务器控制台显示:

GET /articles/:id 404 117ms

显然它没有用 article.id 替换 /:id

我浏览了看起来没有针对 0.20.x 更新的 RestKit 文档和示例,但没有找到答案。我会感谢你的帮助。

4

1 回答 1

3

替换并不总是进入路径模式。特别是,当调用getObject:path:parameters:success:failure:RestKit 时需要一个路径,而不是路径模式,因此它不会尝试替换任何内容。您的响应描述符很好,总是在那里检查路径模式。

getObject:path:parameters:success:failure:如果提供了对象但未提供路径(路径必须为 ),则将注入路径模式nil。在这种情况下,对象管理器将寻找与对象的类和GET请求类型相匹配的路由器。因此,您需要添加一个路由器,例如:

[objectManager.router.routeSet addRoute:[RKRoute routeWithClass:[...Article class] pathPattern:@"/articles/:id" method:RKRequestMethodGET]];
于 2013-08-25T16:09:26.093 回答