基于 AFNetwork 的 iOS 网络框架,简单且轻量。
示例
要运行示例项目,请克隆仓库,并在 Example 目录中首先运行 pod install
。
2.6.0 新特性
版本移除了在 2.0 中新增的 SYRequestParametersBuilder 类,将参数加工的相关方法移动到 SYService 及其子类中进行。将产生缓存 key 的方法移动到缓存类中,不开放给业务层。
2.0 新特性
增加服务支持,不同的服务可以有不同的 baseUrl,也可以有不同的 apiversion,也可以使用不同的 appkey。
修改 AppDelegate
中的相应方法
[[SYRequestConfig sharedConfig] configTimeOutInterval:20
cacheCountLimit:1000
serviceStorage:@{@"TestTypeOne" : @"TestService"}];
在继承自 SYService
的相关子类中添加相应的属性。可以参考 demo
并且为了做出相应修改,在 SYRequest
基类中添加设置这个 api 所属 service 的方法。在子类中只需要添加相应方法。
- (NSString *)serviceType {
return @"TestTypeOne";
}
在 SYService 中添加相关方法
- (SYRequestParametersBuilder *)requestParametersBuilder {
return [TESTRequestParameterBuilder sharedInstance];
}
将签名相关的类移动到这里,实现不同的服务可以有不同的签名规则。
原理
组成
SYNetwork 由以下两个部分组成:
- SYNetwork
SYRequestParametersBuilder
> ~~这个类可以添加一些公共的参数~~ 已经废弃,相关功能已到 SYService 类中
-
SYRequest
所有网络请求 API 的父类
-
SYNetworkConfig
环境配置 包括网络请求的 BaseUrl 请求超时时间,缓存总量等
-
SYHTTPManager
所有网络请求统一由这个类发出
-
SYResponse
网络请求返回值对象
-
SYCache
-
SYCache
缓存管理
-
SYCacheObject
缓存的对象
-
-
SYLogger
一个漂亮的Logger
加入
1、直接将源文件拖入你的工程
2、SYNetwork 也支持通过 Cocoapod。通过在 Podfile 中添加以下代码。
pod "SYNetwork"
然后在终端中运行
pod install
使用方法
step 1
导入头文件
#import <SYNetwork/SYNetwork.h>
在 appdelegate
中加入以下代码
[[SYRequestConfig sharedConfig] configTimeOutInterval:20
cacheCountLimit:1000
serviceStorage:@{@"TestTypeOne" : @"TestService"}];
以上代码中的 XXRequestParametersBuilder
是 SYRequestParametersBuilder
的子类, 主要有以下方法
+ (SYRequestParametersBuilder *)sharedInstance;
- (NSDictionary *)rebuildParameters:(NSDictionary *)parameters;
/**
生成缓存的key 这个方法必须由字类实现 移除后这个key直接由框架内部产生, 不需要再由业务层规定
@param parcmeters 参数
@return key
*/
- (NSString *)cacheSaveKeyString:(NSDictionary *)parcmeters;
步骤 2
每个接口都是一个继承自SYRequest
的子类,接下来以登录为例子
LoginApi.h
- (id)initWithUserName:(NSString *)username password:(NSString *)password;
LoginApi.m
@implementation LoginApi{
NSString *_username;
NSString *_password;
}
- (id)initWithUserName:(NSString *)username password:(NSString *)password {
self = [super init];
if (self) {
_username = username;
_password = password;
_logintype = logintype;
}
return self;
}
- (NSString *)requestUrl {
return @"api/user/login";
}
- (NSMutableDictionary *)requestParams {
return @{
@"phone": _username,
@"code" : _password,
}.mutableCopy;
}
还可以通过SYRequest
的一些方法,来设置请求方法,校验返回收据,是否缓存等问题。
步骤 3 调用
通过block
_loginApi = [[LoginApi alloc] initWithUserName:phone password:code logintype:type];
[_loginApi startWithSuccessBlock:^(SYResponse *response , NSString *errorMessage) {
// 请求成功
} failureBlbck:^(SYResponse *response , NSString *errorMessage) {
// 请求失败
}];
也可以通过delegate
收到回调
_loginApi = [[LoginApi alloc] initWithUserName:phone password:code logintype:type];
_loginApi.callBackDelegate = self;
[_loginApi start];
然后实现
- (void)managerCallApiDidSuccess:(SYResponse *)response;
- (void)managerCallApiDidFailed:(NSString *)errorMessage;
两个方法
许可证
SYNetwork可用MIT许可证。更多信息请参阅LICENSE文件。