2011-09-26 144 views
3

我在我的REST风格的web服务(Rails)上有方法“getBuses”。该方法需要返回JSON中的总线列表 。但是,当我发送请求“/getBuses.json”我 需要发送RestKit - POST响应对象映射

params = [NSDictionary 
dictionaryWithObjectsAndKeys: @"2011-08-16", @"datum", @"TRUE", 
@"fromSerbia", nil]; 

我张贴PARAMS,因为我需要(只为特定 巡演的具体日期)过滤响应。 这样。然后,我期待的回应:

{ 
    "buses" : [ { 
    "bus_number" : "1", 
    "created_at" : "2011-08-15T23:07:52Z", 
    "id" : 1, 
    "lat" : 44.815, 
    "long" : 20.4665, 
    "model" : "Setra", 
    "registar_number" : "123456", 
    "seats" : 50, 
    "tour_id" : 1, 
    "updated_at" : "2011-08-15T23:07:52Z" 
    }, { 
    "bus_number" : "2", 
    "created_at" : "2011-08-15T23:07:52Z", 
    "id" : 2, 
    "lat" : 44.812, 
    "long" : 20.465, 
    "model" : "Mercedes", 
    "registar_number" : "2234", 
    "seats" : 60, 
    "tour_id" : 1, 
    "updated_at" : "2011-08-15T23:07:52Z" 
    } ] 
} 

我只需要使用的NSArray对象总线。 你能告诉我代码示例如何使这个请求和使用RestKit进行对象映射?

回答

5

正如我告诉你的IRC频道,在您的RKClient例如,你可以使用这个方法:

(NSURL *)URLForResourcePath:(的NSString *)resourcePath queryParams:(NSDictionary的*)queryParams

所以你应该这样做:

[objectManager.mappingProvider setMapping:busesMapping forKeyPath:@"buses"]; 

params = [NSDictionary dictionaryWithObjectsAndKeys: @"2011-08-16", @"datum", @"TRUE", @"fromSerbia", nil]; 
NSURL *someURL = [objectManager.client URLForResourcePath:@"/service/getLocations.json" queryParams:params]; 

[objectManager loadObjectsAtResourcePath:[someURL absoluteString] delegate:self]; 

该方法使用resourcePath和参数给出的参数构建一个有效的URL。然后你需要使用NSURL对象的absoluteString将其设置回去。希望这可以帮助!