Swift 4.2中的网络

介绍

好吧,这里通常会花很多时间谈论移动应用程序中网络层的重要性,每个人都知道! 因此,让我们谈谈更重要的事情,如何以可重复使用的方式组织这些事情,而无需一次又一次地重新实现它。
让我们保持简短,着手做生意。
在本教程中,我将分享在POP方法中结合使用可编码的 泛型的经验。

我们将在这里做什么

首先:我们将创建一个请求类型
然后:我们将处理错误类型
下一步:我们将实现一种执行方法并以通用方式映射它
让我们不要忘记整理结果
最后:我们使用请求者类型执行它

请求类型

该对象将封装HTTP调用详细信息:
标头 :是HTTP请求和响应的组成部分,通常包含令牌,登录详细信息…
参数 :这些是HTTP调用的查询详细信息,将以“ http://……?key = value&key = value”的形式显示
BodyParameters:将保存将发送到后端的所有数据。
HTTPMethod :GET,POST,PUT …

让我们从编写一些代码开始!

首先,最简单的事情是定义HTTP方法。

现在我们有了方法,我们将为params,header和bodyParams创建typealias。
然后:
–我们将创建我们的请求协议
–我们将使用协议扩展为其添加默认行为
–最后,我们创建实现该协议的HTTPRequest结构

繁荣! 而已。

错误类型

这种类型将组织我们层中的错误! 为了更好地处理它。
我们有不同类型的错误:
。 网址错误:网址无效时。
。 数据错误:数据为零时。
。 mappingError:将数据映射到可编码对象失败。
响应错误:当我们在执行请求时收到错误时,我们将为此使用泛型,并在枚举的情况下传递错误值,这是很酷的事情!

让我们开始吧!

一块蛋糕!

错误类型使用通用类型E,以后将是快速错误类型。

结果类型

结果可能是成功还是失败🤣对吗?
它使用2种通用类型,一种将在成功时使用,另一种在失败时使用。

请求者

该协议的负责人:
–执行请求
–将结果映射到可编码对象
–使用包含成功或失败的结果类型进行回叫。

好的 ! 这看起来像是一条坤夫线。
函数execute 是一个泛型函数,将实现Codable协议的任何内容都作为泛型类型。
迅速地,我们需要在参数中的某个地方调用泛型,这样才能被识别,否则将无法正常工作。
对于这种情况,我们在参数中传递“ ofType:T.Type”
HTTPResult <T?,HTTPCallErrorType ?>:
这是HTTPResult 的组合:
这是T吗? 亦称Codable类型。
VHTTPCallErrorType ,它将Error用作E的通用参数

让我们开始研究该协议的默认行为。

使用此扩展,我们向请求者添加了默认行为。

如何使用:

就是这样,要查看完整的项目,请检查我的GitHub

结论

在本教程中,我们使用了3个很棒的东西:泛型和面向协议的编程。 您必须问的第三件事是正确的。
如何实现网络层有不同的方法,但是更重要的是要具有可靠,可重用和易于更新的实现。
希望本教程对您有所帮助。
别忘了高五