Andre Espéiorin

3个pods
SOA服务器是构建Web服务的一个很好的方式,它建立在Silex和Doctrine 2之上,但使用iOS作为客户端时,您无法获得相同的使用体验,直到现在。经过很长一段时间使用SOA服务器后,我决定将同样的思维带到Objective-C中来,结果就是这个库。
##获取SOA iOS SDK
###Cocoapods
##配置它为了使SOA SDK生效,您必须配置API URL和共享头文件。 * apiURL用于REST调用 * rpcURL用于RPC调用
```objc [SOAManager defaultManager].apiURL = [NSURL URLWithString:@"http://serveraddress.com/api/v1"];;
[SOAManager defaultManager].rpcURL = [NSURL URLWithString:@"http://serveraddress.com/rpc/v1"];;
[[SOAManager defaultManager] setDefaultHeaders:@{@"Authorization" : @"authorizationtoken_"}]; ```
包括REST API中可用的每个HTTP方法的共享头文件。 ```objc SOAServiceMethodGET, SOAServiceMethodPOST, SOAServiceMethodPUT, SOAServiceMethodDELETE, SOAServiceMethodALL
[[SOAManager defaultManager] setDefaultHeaders:@{@"Content-Type" : @"application/x-www-form-urlencoded"} forMethod:SOAServiceMethodPOST];
[[SOAManager defaultManager] setDefaultHeaders:@{@"Content-Type" : @"application/x-www-form-urlencoded"} forMethod:SOAServiceMethodPUT]; ```
###杂项目前,您可以配置并发请求的队列限制,并且可以将显示或隐藏网络安全状态的职责委托给SOA SDK。 objc [SOAManager defaultManager].maxConcurrentRequests = 4; [SOAManager defaultManager].controlNetworkActivity = YES;
##SOA对象
SOAObject是NSObject的一个子类,是为了存储实体数据而构建的。SOAObject只有一个强制性属性,即实体名称,但您可以设置实体ID。这两个属性均旨在标识对象。
除了它之外,您可以使用setValue:forKey:存储任何类型的数据(指针),并且也可以使用valueForKey:方法检索任何数据。
###创建新对象
```objc SOAObject *hotel = [[SOAObject alloc] initWithEntityName:@"hotel"];;
SOAObject *knownHotel = [[SOAObject alloc] initWithEntityName:@"hotel" entityId:12]; ###处理数据
objc [hotel setValue:@"Ibis" forKey:@"name"]; [hotel setValue:@"R. Nove de Março" forKey:@"street"];;
NSString *name = [hotel valueForKey:@"name"]; ```
###获取对象 objc [SOAObject getWithEntityName:@"hotel" entityId:12 completionBlock:^(id result, NSError *error) { SOAObject *object = (SOAObject *)result; }];
###保存对象 #####静态方式 ```objc [SOAObject saveEntity:@"hotel" parameters:@{ @"id" : @(10), @"name" : @"Bourbon", @"street" : @"R. Visconde de Taunay" } completionBlock:^(id result, NSError *error) {
}];
#####实例方式
objc [hotel saveWithCompletionBlock:^(id result, NSError *error) {
}]; ###删除对象 #####静态方式
objc [SOAObject getWithEntityName:@"hotel" entityId:12 completionBlock:^(id result, NSError *error) { SOAObject *object = (SOAObject *)result; }]; ###实例方式
objc [hotel deleteWithCompletionBlock:^(id result, NSError *error) {
}]; ###SOA查询 ##构建查询
objc SOAQuery *query = [[SOAQuery alloc] initWithEntityName:@"hotel"]; query.offset = 0; query.limit = 100; query.fields = @[@"name", @"id"]; ```
###SOA筛选 objc SOAFilter *filter = [SOAFilter where:@"id" equalTo:@26]; [query addFilter:filter];
###SOA连接 objc SOAFilter *joinFilter = [SOAFilter where:@"id" equalTo:@10]; SOAJoin *join = [SOAJoin joinField:@"user" withFilter:joinFilter]; [query addJoin:join];
###执行查询 objc [query performQueryWithCompletionBlock:^(id result, NSError *error) { NSLog(@"%@", result); }];
##SOA RPC调用
创建一个SOARPCCall实例:objc SOARPCCall *rpc = [[SOARPCCall alloc] init]; 通过调用“/authentication/login”进程,传递参数{"email" : @"[email_protected]", @"password" : @"passwd"},不设置头部信息,并在完成时回调:[rpc callProcedure:@"/authentication/login" parameters:@{@"email" : @"[email protected]", @"password" : @"passwd"} headers:nil completionBlock:^(id result, NSError *error) { NSLog(@"%@", result); NSLog(@"%@", error); }];
许可: MIT