Code Monkey home page Code Monkey logo

jdnetwork's Introduction

JDNetwork

基于AFNetworking封装的链式网络请求

PS:出于兴趣写点快速开发的组件。

优势

一、使用方便

-- 链式调用

-- 方法简洁

二、支持拦截器

可以通过拦截器做很多工作,比如

1、登陆拦截

2、日志、统计

3、缓存

4、自定义解析:拦截器也可以做数据处理的工作

5、等等

三、不影响主线程

拦截器会在单独的队列里面运行,你可以做你想做的任何事,比如文件先压缩再解压这种没脑子的事情都可以。

四、支持Cache

缓存策略分:

JDNetworkCachePolicyIgnored:没有缓存
    
JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest:先加载缓存后请求
    
JDNetworkCachePolicyDoesNotRequestWithinDuration:使用缓存不再请求

五、结构清晰

该项目共分为五小模块(每个模块都很小,所以是小模块)

1、Operation:核心网络请求逻辑都在这里

2、Interceptor:拦截器

3、Cache:基于拦截器实现的缓存模块

4、Entity:自定义的request、response等,方便管理与使用,是网络使用配置的承载体

5、JDNetwork:该类是一个语法糖类,里面包含了很多常用的功能。比如

    5.1、timeoutInterval:超时设置
    
    5.2、parameterEncoding:请求格式
    
    5.3、responseEncoding:响应格式
    
    5.4、parameters:参数设置
    
    5.5、get/post/delete/put/head:http请求方法
    
    5.6、successResponse/errorResponse:成功、失败回调
    
    5.7、其他

六、易扩展

通过拦截器可以很容易扩展功能

项目中的缓存、登录检测、日志、解析等模块就很容易实现

Demo

//最简单的写法
- (IBAction)requestAction1:(id)sender {
    JDNetwork
    .POST(@"https://baidu.com")
    .parameters(@{
        @"username" : @"jd"
    })
    .start();
}

//登录拦截器
- (IBAction)requestAction2:(id)sender {
    JDNetwork
    .GET(@"https://baidu.com")
    .addInterceptor([[LoginInterceptor alloc] init])
    .responseEncoding(JDNetworkResponseXMLParserEncoding)
    .success(^(id result) {
    })
    .error(^(NSError *error) {
    })
    .start();
}

//缓存拦截器
- (IBAction)requestAction3:(id)sender {
    JDNetwork
    .GET(@"https://baidu.com")
    .cachePolicy(JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest)
    .responseEncoding(JDNetworkResponseXMLParserEncoding)
    .success(^(id result) {
    })
    .error(^(NSError *error) {
    })
    .start();
}

//登录+缓存拦截器
- (IBAction)requestAction4:(UIButton *)sender {
    JDNetwork
    .GET(@"https://baidu.com")
    .addInterceptor([[LoginInterceptor alloc] init])
    .addInterceptor([[HttpLoggingInterceptor alloc] init])
    .addInterceptor([[XMLInterceptor alloc] init])
    .cachePolicy(JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest)
    .responseEncoding(JDNetworkResponseXMLParserEncoding)
    .success(^(id result) {
    })
    .error(^(NSError *error) {
    })
    .start();
}


- (IBAction)requestAction5:(id)sender {
    NSString *url = @"/api/openapi/BaikeLemmaCardApi";
    JDNetworkManager.baiduService
    .GET(url)
    .parametersForKey(@"scope", @"103")
    .parametersForKey(@"format", @"json")
    .parametersForKey(@"appid", @"379020")
    .parametersForKey(@"bk_key", @"haha")
    .parametersForKey(@"bk_length", @"600")
    .cachePolicy(JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest)
    .success(^(id result) {
    })
    .error(^(NSError *error) {
    })
    .start();
}

jdnetwork's People

Contributors

jdongkhan avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

jqhee

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.