测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最新发布 | 2016年5月 |
由 Shuo Yang,Attila Tamasi,Imre Katai,Peter Nagy 维护。
此框架的主要责任是从 HTTP 端点下载和上传数据,在可能的情况下解析和反序列化数据,然后返回数据对象。
此方法背后的逻辑是在运行时创建所有与 Web 服务相关的调用和解析逻辑,以避免代码重复。每个方法实现都是客户端根据属于类别扩展的 plist 文件生成的。
该库的此版本支持 iOS 7.1 及以上版本。它使用 NSURLSession
方法。支持上传、下载和数据任务。对于上传和下载,支持使用进度块作为可选内容。
NCJSONSerializer
进行 JSON 顶层反序列化NCSerializer
Nemo Connect 需要 iOS 7.1 或更高版本。该框架旨在使用 ARC。
我们在方法签名中使用特殊指示符或标识符来将变量替换到我们的网络请求对象中。参数指示符是特殊字符串。我们可以在请求路径、正文和头中使用参数指示符。如果请求/路径参数中的参数签名,则您必须使用 % 字符作为前缀。
参数必须是 NSObject
。不批准基本类型,如 int
,float
,BOOL
!如果只想传递对象的某个属性,则可以以这种方式访问该属性。
%OBJECT_INDICATOR_NUMBER[PROPERTY_NAME]
必需参数。所有的请求参数,如路径、方法、主体等都将归入其中。
始终为字符串值。您可以在其中添加新的请求路径,或者您可以替换参数指示器,这正是您可以向HTTP端点发送GET参数的地方。
可选参数,但始终为字符串。授权值为REST支持的HTTP方法名称(GET
、POST
、DELETE
、PUT
)。默认参数是GET
。
可选参数。您只能将NSData
作为主体对象传递。每个请求仅支持参数列表中的一个NSData
对象。
可选参数,几乎与主体参数相同。唯一不同的是,仅接受授权字典。
仅在您需要反序列化网络请求的响应时才必需。您必须设置序列化器类名称和序列化对象名称。
序列化器类名称。此类必须符合NCSerializer
协议。使用框架,我们可以使用NCJSONSerializer
作为顶级对象映射器。
字符串值,用于反序列化。目标模型类名称。
以下是一些如何创建网络请求的示例。
第一个示例显示如何下载图像以及如何设置请求。第二个示例将是一个带有BASIC身份验证请求JSON对象的另一个网络请求。在第三个示例中,您将看到一个反序列化示例。
首先,您需要将框架导入到您的项目中,并导入头文件。
#import <Nemo Connect/NemoConnect.h>
然后,您必须创建一个网络服务实例,并通过指定的初始化程序正确设置。
NSURL *apiURL = [NSURL URLWithString:@"http://HTTP_ENDPOINT"];
self.webService = [[NCWebService alloc] initWithBaseURL:apiURL processingQueue:self.workingQueue];
[self.webService setServiceName:@"Image"];
下一步将非常重要。您必须创建一个网络服务顶部的分类头文件(只需头文件,不再需要实现部分),其名称如下
NCWebService+Image.h
然后,在那里添加您的签名,如这样
- (NSOperation *)downloadImageWithName:(NSString *)imageName completionBlock:(NCWebServiceCallbackBlock)completionBlock progressBlock:(NCNetworkDownloaderProgressBlock)progressBlock;
然后,您必须创建一个plist文件,文件名与头文件中相同,只是扩展名是当然的.plist。因此
NCWebService+Image.plist
将plist文件填写为网络服务所需的内容。有关正确配置的更多详细信息,请参阅此页面中的配置部分。
然后,您只需从模型管理器实现中调用此签名即可。
[self.webService downloadImageWithName:imageName completionBlock:completionBlock progressBlock:progressBlock];
在这个示例中,您必须像下载示例中那样创建所需的分类头文件和plist文件对。
第一步是设置网络服务实例,创建一个身份验证提供者实例。
// create an authentication provider
NCBasicAuthentication *authenticationProvider = [[NCBasicAuthentication alloc] initWithUsername:@“USERNAME" password:@“PASSWORD”];
// setup web service
NSURL *apiURL = [NSURL URLWithString:@“http://HTTP_ENDPOINT"];
self.webService = [[NCWebService alloc] initWithBaseURL:apiURL processingQueue:self.workingQueue authenticationProvider:authenticationProvider];
[self.webService setServiceName:@"PharmacySearch"];
下一步是创建网络请求的正确方法签名和plist文件。
- (void)searchWithZIPCode:(NSString *)zipCode completionBlock:(NCWebServiceCallbackBlock)completionBlock;
如您所见,我们在这里传递一个参数,通过请求路径作为GET参数传递。我们标记此参数指示符%0 - 这意味着签名中的第一个参数。
调用您的签名
[self.webService searchWithZIPCode:zipCode completionBlock:^(id data, NSError *const error, NSHTTPURLResponse httpURLResponse) {
}];
重复第一步,创建分类头和plist文件。然后设置您的网络服务实例。
在头文件中创建您的函数签名
- (NSOperation *)getUsersListWithCompletionBlock:(NCWebServiceCallbackBlock)completionBlock;
设置配置文件
请记住创建您的反序列化蓝图对象,在示例中是NDAUser
数据模型对象。
调用
[self.webService getUsersListWithCompletionBlock:^(id data, NSError *const error, NSHTTPURLResponse *httpURLResponse) {
NSLog(@"%@", data); // this data object will be an NDAUser data object
}];
Nemo Connect遵循MIT许可证发布。请参阅LICENSE文件以获取详细信息。