{"id":20613592,"url":"https://github.com/jdongkhan/jdnetwork","last_synced_at":"2026-01-23T18:31:23.906Z","repository":{"id":56915801,"uuid":"97924558","full_name":"JDongKhan/JDNetwork","owner":"JDongKhan","description":"iOS对网络的封装支持链式调用，支持拦截器定制各种需求","archived":false,"fork":false,"pushed_at":"2019-08-20T01:02:45.000Z","size":3919,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T17:47:25.630Z","etag":null,"topics":["afnetworking","ios","objective-c"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JDongKhan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-21T08:24:28.000Z","updated_at":"2024-07-15T02:35:28.000Z","dependencies_parsed_at":"2022-08-20T21:20:20.727Z","dependency_job_id":null,"html_url":"https://github.com/JDongKhan/JDNetwork","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDongKhan%2FJDNetwork","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDongKhan%2FJDNetwork/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDongKhan%2FJDNetwork/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDongKhan%2FJDNetwork/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JDongKhan","download_url":"https://codeload.github.com/JDongKhan/JDNetwork/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249023956,"owners_count":21199999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["afnetworking","ios","objective-c"],"created_at":"2024-11-16T11:10:34.845Z","updated_at":"2026-01-23T18:31:23.086Z","avatar_url":"https://github.com/JDongKhan.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JDNetwork\n\n基于AFNetworking封装的链式网络请求\n\nPS:出于兴趣写点快速开发的组件。\n\n## 优势\n\n### 一、使用方便\n\n    -- 链式调用\n    \n    -- 方法简洁\n\n### 二、支持拦截器\n    \n    可以通过拦截器做很多工作，比如\n    \n    1、登陆拦截\n    \n    2、日志、统计\n    \n    3、缓存\n    \n    4、自定义解析：拦截器也可以做数据处理的工作\n    \n    5、等等\n    \n### 三、不影响主线程\n    \n    拦截器会在单独的队列里面运行，你可以做你想做的任何事，比如文件先压缩再解压这种没脑子的事情都可以。\n    \n\n### 四、支持Cache\n\n    缓存策略分:\n    \n    JDNetworkCachePolicyIgnored:没有缓存\n        \n    JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest:先加载缓存后请求\n        \n    JDNetworkCachePolicyDoesNotRequestWithinDuration:使用缓存不再请求\n            \n    \n### 五、结构清晰\n\n    该项目共分为五小模块（每个模块都很小，所以是小模块）\n    \n    1、Operation：核心网络请求逻辑都在这里\n    \n    2、Interceptor：拦截器\n    \n    3、Cache：基于拦截器实现的缓存模块\n    \n    4、Entity：自定义的request、response等，方便管理与使用，是网络使用配置的承载体\n    \n    5、JDNetwork：该类是一个语法糖类，里面包含了很多常用的功能。比如\n    \n        5.1、timeoutInterval：超时设置\n        \n        5.2、parameterEncoding：请求格式\n        \n        5.3、responseEncoding：响应格式\n        \n        5.4、parameters：参数设置\n        \n        5.5、get/post/delete/put/head：http请求方法\n        \n        5.6、successResponse/errorResponse:成功、失败回调\n        \n        5.7、其他\n\n\n### 六、易扩展\n\n    通过拦截器可以很容易扩展功能\n\n    项目中的缓存、登录检测、日志、解析等模块就很容易实现\n\n\n\n##   Demo\n\n```objc\n\n//最简单的写法\n- (IBAction)requestAction1:(id)sender {\n    JDNetwork\n    .POST(@\"https://baidu.com\")\n    .parameters(@{\n        @\"username\" : @\"jd\"\n    })\n    .start();\n}\n\n//登录拦截器\n- (IBAction)requestAction2:(id)sender {\n    JDNetwork\n    .GET(@\"https://baidu.com\")\n    .addInterceptor([[LoginInterceptor alloc] init])\n    .responseEncoding(JDNetworkResponseXMLParserEncoding)\n    .success(^(id result) {\n    })\n    .error(^(NSError *error) {\n    })\n    .start();\n}\n\n//缓存拦截器\n- (IBAction)requestAction3:(id)sender {\n    JDNetwork\n    .GET(@\"https://baidu.com\")\n    .cachePolicy(JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest)\n    .responseEncoding(JDNetworkResponseXMLParserEncoding)\n    .success(^(id result) {\n    })\n    .error(^(NSError *error) {\n    })\n    .start();\n}\n\n//登录+缓存拦截器\n- (IBAction)requestAction4:(UIButton *)sender {\n    JDNetwork\n    .GET(@\"https://baidu.com\")\n    .addInterceptor([[LoginInterceptor alloc] init])\n    .addInterceptor([[HttpLoggingInterceptor alloc] init])\n    .addInterceptor([[XMLInterceptor alloc] init])\n    .cachePolicy(JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest)\n    .responseEncoding(JDNetworkResponseXMLParserEncoding)\n    .success(^(id result) {\n    })\n    .error(^(NSError *error) {\n    })\n    .start();\n}\n\n\n- (IBAction)requestAction5:(id)sender {\n    NSString *url = @\"/api/openapi/BaikeLemmaCardApi\";\n    JDNetworkManager.baiduService\n    .GET(url)\n    .parametersForKey(@\"scope\", @\"103\")\n    .parametersForKey(@\"format\", @\"json\")\n    .parametersForKey(@\"appid\", @\"379020\")\n    .parametersForKey(@\"bk_key\", @\"haha\")\n    .parametersForKey(@\"bk_length\", @\"600\")\n    .cachePolicy(JDNetworkCachePolicyLoadCacheOnlyAtFirstTimeAndAlwaysRequest)\n    .success(^(id result) {\n    })\n    .error(^(NSError *error) {\n    })\n    .start();\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdongkhan%2Fjdnetwork","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdongkhan%2Fjdnetwork","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdongkhan%2Fjdnetwork/lists"}