测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2014 年 12 月 |
由 Johannes Plunien 维护。
ReactiveNetworking 是一个用于通过 HTTP 与某些 API 交互的 Cocoa 和 Cocoa Touch 框架,它使用 AFNetworking、Mantle 和 ReactiveCocoa 构建。
大部分代码毫不掩饰地抄自 Github 的 OctoKit。
假设有一个 API,当对 GET /users/plu
进行请求时返回如下 JSON 响应。
{
"user": {
"id": 42,
"login_name": "plu",
"display_name": "Johannes Plunien"
}
}
@interface ReadmeUser : MTLModel <MTLJSONSerializing>
@property (nonatomic, copy, readonly) NSString *objectID;
@property (nonatomic, copy, readonly) NSString *login;
@property (nonatomic, copy, readonly) NSString *name;
@end
@implementation ReadmeUser
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{@"objectID": @"id",
@"login": @"login_name",
@"name": @"display_name"};
}
@end
@interface ReadmeClient : RNClient
- (RACSignal *)fetchUser:(NSString *)username;
@end
@implementation ReadmeClient
- (instancetype)initWithBaseURL:(NSURL *)url
{
if (url == nil) url = [NSURL URLWithString:@"https://api.example.com"];
self = [super initWithBaseURL:url];
if (self) {
[self registerHTTPOperationClass:AFJSONRequestOperation.class];
[self setDefaultHeader:@"Accept" value:@"application/json"];
}
return self;
}
- (RACSignal *)fetchUser:(NSString *)username
{
NSString *path = [NSString stringWithFormat:@"/users/%@", username];
NSMutableURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:nil];
return [self enqueueRequest:request
resultClass:ReadmeUser.class
keyPaths:@[@"user"]];
}
@end
ReadmeClient *client = [[ReadmeClient alloc] initWithBaseURL:nil];
[[client fetchUser:@"plu"] subscribeNext:^(RNResponse *response) {
NSLog(@"%@", response.parsedResult);
}];
它将记录类似下面的内容:
<ReadmeUser: 0x10052a140> {
login = plu;
name = "Johannes Plunien";
objectID = 42;
}
版权声明(c)2014 Johannes Plunien
以下是将本软件及其相关文档文件(以下简称“软件”)副本的任何个人免费许可的权利,包括而不限于以下权利:在不限制地使用软件、复制、修改、合并、发布、分发、再许可和/或出售软件副本,以及允许获得软件的个人这样做,但前提是上述版权声明和许可声明应当包含在所有副本或软件的主要部分中。
上述版权声明和本许可声明应当包含在所有副本或软件的主要部分中。
本软件按“现状”提供,不提供任何形式,明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权持有人都不对以下事项承担任何责任,无论作者或版权持有人成为此类诉讼的被告:合同、侵权或其他行为,由此软件或软件的使用或其它交易导致或与之相关的任何索赔、损失或其它责任。