美文网首页iOS开发
iOS开发-网络-合理封装请求接口(二)业务API接入实现

iOS开发-网络-合理封装请求接口(二)业务API接入实现

作者: Geniune | 来源:发表于2018-04-19 13:25 被阅读151次

MVC设计模式的是一个在复杂应用设计中组织代码的公认模式,我将处理网络请求的Model分为了三种

  1. ModelR:实例对象键值对与入参所需内容相同,用于发起(Model Request)
  2. Model :实例对象键值对与回参所需内容相同,用于接收(Model Response)
  3. NetworkAPI :封装业务API,负责将ModelR转换并入参,发起请求,请求成功/失败后将回参字段映射成Model

举个栗子,使用用户名:“admin”,密码:“123456”,POST接口http://example.com/?action=login,拿到token实现登录功能
入参数据:

{
    account = "admin";
    password = "123456";
}

回参数据:

{
    data =     {
        token = "2c165baee7f20ca91";
    }
    message = "Success !";
    status = 200;
}

入参建模(ModelR):

@interface LoginModelR : BaseModel

@property (nonatomic, strong) NSString *account;//账号

@property (nonatomic, strong) NSString *password;//密码

@end

回参建模(Model):

@interface LoginModel : BaseModel

@property (nonatomic, strong) NSString *token;//token

@end

实现业务API请求函数(NetworkAPI):

+ (void)login:(LoginModelR *)modelR success:(void(^)(LoginModel *model))success failure:(void(^)(HttpException * e))failure{

    NSString *API = @"[http://example.com/?action=login](http://example.com/?action=login)";

    NSDictionary *params = [modelR dictionaryModel]; //Model -> NSDictionary

    [HttpClientMgr post:API params:params success:^(id responseObj) {

        LoginModel *model = [LoginModel parse:responseObj]; //NSDictionary -> Model

        if(success){
            success(model);
        }
    } failure:^(HttpException *e) {

        if(failure){
            failure(e);
        }
    }];
}

使用账号密码登录功能不到十行代码即可实现

LoginModelR *modelR = [LoginModelR new];
modelR.account = @"admin";//账号
modelR.password = @"123456";//密码

[NetworkAPI login:modelR success:^(LoginModel *model) {

    //成功回调
    NSLog(@"success! Token:%@", model.token);//取得token
} failure:^(HttpException *e) {

    //失败回调
    NSLog(@"failure! Reason:%@", e.message);//打印失败原因
}];

注意:http://example.com/?action=login仅作示例,请勿向其发起请求
为了更好的理解,我将在下篇文章中使用一个真实案例来阐述如何使用
链接:iOS开发-网络-合理封装请求接口(三)真实案例

相关文章

网友评论

    本文标题:iOS开发-网络-合理封装请求接口(二)业务API接入实现

    本文链接:https://www.haomeiwen.com/subject/zekwkftx.html