当前位置: 首页 > article >正文

IOS-Moya简单使用-Swift

Moya介绍

Moya是一个基于Swift语言的网络抽象层库,用于简化iOS应用程序中的网络请求和数据处理。它建立在Alamofire之上,提供了一种更简洁、类型安全和易于测试的方式来处理网络请求。

Moya的主要特点包括:

1、类型安全:利用枚举类型定义API端点和请求参数,避免了手动构建URL和参数的繁琐过程。2、易于测试:使用Moya可以更轻松地进行单元测试,因为它将网络请求和数据处理逻辑分离,使得可以更容易地模拟网络请求和处理不同的响应。3、简洁性:Moya提供了一种简洁的方式来定义和执行网络请求,减少了重复的代码和错误。

简单食用

地址:https://github.com/Moya/Moya

使用

创建枚举

对应的就是后台Api接口的方法

import Moyaenum ApiService{case login(login:LoginBN)case getRole(page:Int)
}

遵循TargetType协议

在同一个文件中,通过扩展来遵循协议:

extension ApiService:TargetType{//服务器跟地址var baseURL: URL {let url="http://***/"return URL(string: url)!}//路径var path: String {switch self{case .login:return "login/loginUser"case .getRole:return "staff/findAllRole"}}//请求方法var method: Moya.Method {return .post}//task参数设置var task: Moya.Task {switch self{case .login(let login)://参数是body实体类型的就这样return .requestJSONEncodable(login)case .getRole(let page)://参数是query类型的,就这样let params:[String:Int] = ["page":page]return .requestParameters(parameters: params, encoding: URLEncoding.queryString)}}//头信息var headers: [String : String]? {var headers:Dictionary<String,String> = [:]headers["Content-Type"]="application/json"
//        headers["token"]="41aaf0d73b7d4e739f50c9c92924378d"return headers}
}

发起请求

然后创建一个provider 来发起请求

let provider = MoyaProvider<ApiService>()
provider.request(.login(login: login)){result inswitch result{case .success(let response):let data=response.data//data就是请求得到的字节数据let responseBody = String(data: data, encoding: .utf8)let str2 = responseBody!let jsonData = str2.data(using: .utf8)!print(str2)do {let base = try JSONDecoder().decode(BaseBN<UserBN>.self, from: jsonData)let user=base.dataif user != nil {self.login(user: user!)}print(user as Any)} catch {print("Error decoding JSON: \(error)")}breakcase.failure(let error):print(error)break}}

完成!

http://www.lryc.cn/news/2417178.html

相关文章:

  • Myo肌电臂环中文入门指南及基于matlab获取Myo臂环信号
  • C++11重写muduo网络库——预备知识
  • 行业分析
  • 为什么有时候启动Activity需要加FLAG_ACTIVITY_NEW_TASK
  • 制作一个简单HTML中华传统文化网页设计源码(HTML+CSS)
  • GRUB4DOS使用大全
  • 《Head first Java》练习
  • asdasdasdasdasdas
  • 位图(bmp)文件格式分析
  • CPU架构名词解释
  • 计算机网络之网络基础网络通信原理(非常重要的网络基础知识,内含思维导图和详细图解)
  • 药娘化女仆公读《乡村振兴战略下传统村落文化旅游设计》晏嘤茹苦辉少许
  • 大家厚爱
  • maven冲突解决-enforcer插件介绍
  • 数学规划模型之线性规划
  • 操作系统实验二·生产者消费者问题
  • CodeProject SenseAI服务器:AI最简单的方法
  • 点对点 端到端的区别
  • 【论文阅读】HGT:Heterogeneous Graph Transformer
  • 网络分析——路径分析
  • [计算机效率] 磁盘优化及清理
  • 【已解决】ping: www.baidu.com: 未知的名称或服务
  • linux系统安装步骤
  • _Deallocate 造成 Exception:(_Ptr_user(_BIG_ALLOCATION_ALIGNMENT-1))==0
  • 《新人皮灯笼》里白扇子谋权篡位的暗线
  • 十进制二进制转换简单说明
  • 桌面精灵制作记录
  • linux 搭建webserver-Goahead
  • roundrobin来历_数据中心交换机横向虚拟化集群漫谈
  • GPU算力评估