SYNetwork 2.6.1

SYNetwork 2.6.1

测试测试过
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2018年11月

programersunny 维护。



SYNetwork 2.6.1

  • 作者
  • CepheusSun

CI Status Version License Platform

基于 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"}];

以上代码中的 XXRequestParametersBuilderSYRequestParametersBuilder 的子类, 主要有以下方法

+ (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文件。