Mercurio 0.3.0

Mercurio 0.3.0

测试已测试
语言语言 Obj-CObjective C
许可协议 MIT
发布上次发布2016年11月

Stefano Zanetti 维护。



 
依赖
AFNetworking~> 3.0
Mantle~> 2.0.6
SAMKeychain~> 1.5.1
 

Mercurio 0.3.0

Mercurio是一个使用AFNetworking创建API并用Mantle解析响应的快速方法。

用法

要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install

安装

Mercurio通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中

pod 'Mercurio', '~> 0.1.3'

示例

定义响应对象
@interface MEResponse : MEModel

@property (copy, nonatomic) NSString *accept;
@property (copy, nonatomic) NSString *acceptEncoding;
@property (copy, nonatomic) NSString *acceptLanguage;
@property (copy, nonatomic) NSString *host;
@property (copy, nonatomic) NSString *userAgent;

@end
@implementation MEResponse

+ (NSDictionary *)JSONKeyPathsByPropertyKey {
    return @{ selStr(accept) : @"Accept",
              selStr(acceptEncoding) : @"Accept-Encoding",
              selStr(acceptLanguage) : @"Accept-Language",
              selStr(host) : @"Host",
              selStr(userAgent) : @"User-Agent" };
}

@end

GET

您必须创建一个MEApi实例,设置路径、响应类以及json响应对象的根。就是这样!

MEApi *api = [MEApi apiWithMethod:MEApiMethodGET
                             path:@"https://httpbin.org/get"
                    responseClass:[MEResponse class]
                         jsonRoot:@"headers"];

现在您只需告诉MESessionManager您想要执行哪个API即可。

[[MESessionManager sharedInstance] sessionDataTaskWithApi:api
                                               completion:^(id responseObject, NSURLSessionDataTask *task, NSError *error) {
                                                   if (!error) {
                                                       NSLog(@"%@", responseObject);
                                                   }
                                               }];
POST Multipart

像上一个示例一样,您必须创建一个MEMultipartFormApi实例。MEMultipartFormApi是一个遵循MEMultipartFormApiProtocol协议的MEApi。

MEMultipartFormApi *api = [MEMultipartFormApi apiWithMethod:MEApiMethodPOST
                                                       path:@"http://posttestserver.com/post.php?dir=mercurio"
                                              responseClass:[NSNull class]
                                                   jsonRoot:nil];

[api setMultipartFormConstructingBodyBlock:^(id<AFMultipartFormData> formData) {
       [formData appendPartWithFileData:[NSData data]
                                   name:@""name"
                               fileName:@"file.jpg"
                               mimeType:@"image/jpeg"];
}];

然后MESessionManager完成剩余的操作。

[[MESessionManager sharedInstance] sessionMultipartDataTaskWithApi:api
                                                        completion:^(id responseObject, NSURLSessionDataTask *task, NSError *error) {    
                                                            if (!error) {
                                                                NSLog(@"%@", responseObject);
                                                            }
                                                        }];

MESessionManager始终返回NSURLSessionDataTask,因此您可以在任何时间取消操作。

作者

Stefano Zanetti,[email protected]

许可协议

Mercurio以MIT许可协议提供。有关更多信息,请参阅LICENSE文件。