正在将url参数添加到RestKit RKObjectManager putObject



我正试图用以下格式发送PUT请求:

http://server.com/api/tag/:tagId?extra1=abc&extra2=def

 RKObjectManager *manager = [RKObjectManager managerWithBaseURL:@"http://server.com"];
 [manager.router.routeSet addRoute:[RKRoute routeWithClass:[Tag class] pathPattern:@"/api/tag/:tagId" method:RKRequestMethodPut]];
Tag *tag = [[Tag alloc] initWithName:name andId:tagId];
[manager putObject:tag path:nil parameters:@{@"extra1":@"abc", @"extra2":@"def"}
           success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
               [delegate onRequestSuccess:request withData:tag];
           }
           failure:^(RKObjectRequestOperation *operation, NSError *error) {
           }];
[delegate onRequestStart:request];

但是参数被放入请求的正文中,而不是像在get或DELETE请求中那样放入URL。POST请求也是如此。

谢谢你的建议。

以下是我过去如何解决这个问题:

不需要制定路线,只需手动创建URL路径,将参数直接输入字符串:

NSString *urlPath = [NSString stringWithFormat:
                      @"/api/tag/:tagId?extra1=%@&extra2=%@", @"abc", @"def"];

然后,使用path而不是parameters:调用您的putObject请求

[manager putObject:tag path:urlPath parameters:nil
           success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
               [delegate onRequestSuccess:request withData:tag];
           }
           failure:nil];

我不确定这是否是"正确"的方法,但它肯定对你有效!

最新更新