Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Swift5.0:基于Alamofire的网络封装及基于Codable的model解析

Notifications You must be signed in to change notification settings

Habit21D/SwiftHttpRequest

Repository files navigation

SwiftHttpRequest(Swift5)

这里主要介绍了swift版本的网络请求,封装中带有Progress及错误信息处理,缓存等的统一解决方案

简书地址https://www.jianshu.com/p/caa1a57e7423


Demo说明

Demo主要介绍Swift的网络部分,代码已更新到swift5.0

本demo内容可直接用于项目开发

  1. Moya文件夹中:MoyaBase是对Moya的封装。/Moya/MoyaBase/组建是可以不用更改的,当然,你也可以自定义组件
  2. MoyaConfig.swift需要根据项目进行配置。每一项代码中都有明确的注释。
  3. HttpRequest.swift需要自己重写跳转登录的代码,如果用不到可以删除或者将HttpCode.needLogin改为不可能用到的值
  4. MoyaAPI里是后台接口及model文件
  5. 提供跨类型解析方案,提供codable默认值解决方案
一. 网络部分

请求均采用 Alamofire

请求封装方式分为:

  • 1.Moya(一个star很多的Alamofire的上层封装,为本demo推荐方式。我在使用过程中发现moya是极其优美的网络请求方式)
  • 2.链式请求(如果你刚刚从OC转到swift,可能还不适应moya的方式,那么也可以用这种请求方式)
  • 3.仿AFN式请求(这应该是OC中常见的封装方式)
二. Progress及信息处理

加载动画及弹出框采用 MBProgressHUD

三. 数据解析

在swift4之前,我一直用的是HandyJSON(下面有介绍)。在swift4之后我把model的解析转到到官方的Codable。

四. 缓存

缓存部分没有接入数据库,而是直接用了write to file,并将缓存封装到网络请求方法中

Demo所用接口

接口:http://app.u17.com/v3/appV3_3/ios/phone/rank/list 请求方式:get

作者语:

希望能达到抛砖引玉的效果

也给新学习swift的朋友一个简单的网络处理的方式

大家互相帮助,互相学习

如果对你有帮助还请给个Star,谢谢🙏


版本:
  • 2.3 更新到Swift5

  • 2.2 修改文件结构。使用moya时请配置MoyaConfig和HttpRequest文件。这是一个demo,不是一个拿来即用的三方库,所以请认真阅读代码,根据自己的项目做出更改和优化

  • 2.1 Codable跨类型解析:Int解析成String, String解析成Int

  • 2.0 更新到swift4,重新整理代码

  • 1.2 新增moya的demo

  • 1.1 新增链式请求的封装 链式请求可以只组合需要的函数,本身默认为常用方式,简化常用的链式调用; 对于非默认值的请求可以自定义进行设置; 方便添加自定义行为,利于扩展;

  • 1.0 类OC中的AFN封装 利于OC转swift的同学学习。 其中对返回值做了JSON和String两种解析,String是为了方便实用HandyJSON,不使用HandyJSON可以自行删除部分代码

About

Swift5.0:基于Alamofire的网络封装及基于Codable的model解析

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /