GithubHelp home page GithubHelp logo

evan310 / swifthttprequest Goto Github PK

View Code? Open in Web Editor NEW

This project forked from habit21d/swifthttprequest

0.0 1.0 0.0 1.96 MB

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

Swift 99.27% Ruby 0.73%

swifthttprequest's Introduction

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. 后台最常用的类型,也是最容易让我们出错的就是IntString类型的不确定, TStrInt.swift提供了后台同一个字段返回类型IntString不确定时的解析方式, 可自行增加Bool类型等。
一. 网络部分

请求均采用 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,谢谢🙏(如果问题联系我: QQ 296369928)


版本:
  • 2.3 更新到Swift5

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

  • 2.1 Codable跨类型解析:Int解析成StringString解析成Int

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

  • 1.2 新增moya的demo

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

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

swifthttprequest's People

Contributors

habit21d avatar

Watchers

James Cloos avatar

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.