【问题标题】:RestKit base URL - directory following domain nameRestKit 基本 URL - 域名后的目录
【发布时间】:2015-01-15 20:34:50
【问题描述】:

我正在尝试将 RestKit 的基本 URL 设置为 http://example.com/api,如下所示:

// initialize AFNetworking HTTPClient
NSURL *baseURL = [NSURL URLWithString:@"http://example.com/api"];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];

// initialize RestKit
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
[RKObjectManager setSharedManager:objectManager];

但由于某种原因,它仅将域 http://example.com 保存为基本 URL,并且在其后没有后续目录。

我可以简单地在所有 API 路径调用前添加 /api(例如 /api/events/active 而不是 /events/active),但如果我最终使用不同版本的 API 会容易得多,例如(例如/v1)。理想情况下,我将能够只更改基本 URL 而不是所有单独的路径。任何想法为什么我无法正确设置基本 URL?

非常感谢! -瑞安

已解决:

基本 URL 之前存储为“http://example.com/api”,路径为“/events”。

感谢 Paul 在下面的回答,正确的方法是将基本 URL 存储为“http://example.com/api/”,将路径存储为“事件”。

【问题讨论】:

  • 你能举个例子吗?

标签: ios objective-c afnetworking restkit


【解决方案1】:

在后台AFHTTPClient 使用-[NSURL URLWithString:relativeToURL:] 来构建您的网址。如果您查看此方法的docs,您会发现它需要一个斜杠。你可以摆脱这个,因为AFHTTPClient 似乎为你附加了这个。

这只是给我们留下了这个潜在的问题

NSURL *baseURL = [NSURL URLWithString:@"https://example.com/api/"];
NSLog(@"%@", [[NSURL URLWithString:@"/events" relativeToURL:baseURL] absoluteURL]);
//=> https://example.com/events
NSLog(@"%@", [[NSURL URLWithString:@"events"  relativeToURL:baseURL] absoluteURL]);
//=> https://example.com/api/events

如果你在前面加上一个正斜杠,它会关闭任何路径组件并只使用 url 的主机部分。因此,请确保不要在路径中添加斜杠

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多