Swift 网络请求Moya框架简单二次封装
网上搜了一堆Moya框架的使用,基本都是case的方式,本人觉得使用起来不太方便(轻喷),于是自己封装了一个。代码如下:
//
// NetWorkUtil.swift
// Created by 墨泉
//
import Moya
import SwiftyJSON
class NetWorkUtil {
fileprivate var requestPath: String = "" //请求接口
fileprivate var requestMethod: Moya.Method = .post //请求方式
fileprivate var parameters: [String: Any] = [:] //请求参数
fileprivate let encoding = JSONEncoding.default //请求编码,根据实际需求自行更改
init() {
}
// 网络请求,返回成功和失败结果
public func request(method: Moya.Method = .post, url: String, parameters: [String: Any],
resultSuccess: @escaping (_ message: String, _ result: Any) -> Void,
resultFail: @escaping (_ message: String) -> Void) {
self.requestPath = url
self.requestMethod = method
self.parameters = parameters
let networkProvider = MoyaProvider<NetWorkUtil>()
networkProvider.request(self) { result in
self.resultData(result: result, resultSuccess: resultSuccess, resultFail: resultFail)
}
}
//请求结果处理
fileprivate func resultData(result: Result<Moya.Response, MoyaError>,
resultSuccess: @escaping (_ message: String, _ result: Any) -> Void,
resultFail: @escaping (_ message: String) -> Void) {
if case .success(let response) = result {
// 解析数据,读者根据后端返回协议自行修改
let json = JsonUtils.toJson(response.data)
let code = json["Code"].stringValue
let message = json["Message"].stringValue
let result = json["Result"].object
if code == "0" {
resultSuccess(message, result)
} else {
resultFail(message)
}
} else {
resultFail(Strings.hint_network_error) //错误提示,内容读者可自定义
}
}
}
extension NetWorkUtil:TargetType{
public var baseURL: URL{
return URL(string: Constants.URL.BASE_URL)! //网络请求地址,读者改成自己的地址即可
}
public var path: String {
return requestPath
}
public var method: Moya.Method {
return requestMethod
}
public var task: Task {
return .requestParameters(parameters: parameters, encoding: encoding)
}
// 是否执行Alamofire验证
public var validate: Bool {
return false
}
// 请求头
public var headers: [String: String]? {
let token: String = Utils.getData("token") as? String ?? ""
return ["Token": token]
}
}
以上代码正常的话,pod Moya跟SwiftyJSON就能直接使用了,使用方式如下:
let parameters: [String: String] = [
"param1": "1",
"param2": "2"
]
let netWorkUtil = NetWorkUtil()
netWorkUtil.request(method: .post, url: (你的接口,如path/login), parameters: parameters,
resultSuccess: { (message, result) in
//返回成功
},
resultFail: { (message) in
//返回失败
}
)
以上就是全部代码,如果对你有帮助,欢迎转载,注明出处就行。
Swift 网络请求Moya框架简单二次封装相关推荐
- Swift 网络请求 Moya+RxSwift
Swift中优雅的网络请求 官方github // 1.定一个enum enum MyService {xxxxcase showUser(id: Int)xxx }// 2.扩展这个enum,符合 ...
- dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header
话不多说自己看代码封装的比较简单,比较适合入门学习Dio. import 'package:dio/dio.dart'; import 'Api.dart'; /* * 封装 restful 请求 * ...
- Android-第十一节网络请求第三方框架-xutils3
目录 一.xUtils3简介 1.网络请求 2.网络图片加载 3.注解 4.数据库 二.xUtils框架使用方法 1.xUtils框架一个简单的网络请求 2.xUitls框架注解 2.1布局文件的注解 ...
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求 转自 http://www.cocoachina.com/ios/20141202/10390.html 本 ...
- Flutter - dio 简单二次封装
demo 地址: https://github.com/iotjin/jh_flutter_demo Flutter Dio简单二次封装和自定义Header Flutter Dio二次封装 Flutt ...
- Swift 网络请求库Moya的使用
Moya是Swift中的网络库Alamofire的二次封装,Alamofire本身使用起来是很简单方便的,例子如下: func loadData(){var param = [String:Strin ...
- 二、Swift网络请求回来的数据我这样取
网络请求框架Alamofire 源码地址 Swift 2.3 Alamofire3.0版本支持 iOS 8 Swift 3 Alamofire4.0以上版本支持 iOS 9及以上系统 json数据: ...
- Swift 优雅的网络请求Moya
Moya使用demo Moya 面向协议 Moya的模块组成 代码demo Controller中使用 Moya Moya是一个网络抽象层,它在底层将Alamofire进行封装,对外提供更简洁的接口供 ...
- Android中Http网络请求库框架Volley和Asnyc-http的使用---第三方库学习笔记(一)
Volley框架: 特点: 通信更快,更简单 Get,Post网络请求及网络图像的高效率异步处理请求. 当多个请求时,对网络请求进行排序,按优先级处理 当网络状况不好时,Volley可以自动对上次请求 ...
- Swift 网络请求数据与解析
一: Swift 网络数据请求与处理最常用第三方 又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累.博客一篇写出来,好多就直接照抄,就没有实质性的把问 ...
最新文章
- java中的文件_JAVA中文件的操作
- 【Python】写文件个性化设置模块Python_Xlwt练习
- Vue.js 生产环境部署
- 【youcans 的 OpenCV 例程200篇】135. 形态学重建之粒度测定
- 身边的同学突然去世,听到消息的时候会伤心吗?
- 五种方法快速查找对方IP地址(转)
- 2021年高压电工模拟考试题及高压电工操作证考试
- “商务网”,聚合头头网商务开放室,集群式商务推广平台
- 计算机进入低能耗休眠状态,BIOS电源管理ACPI的D3cold-D3hot
- 比UUID更快更安全NanoID到底是怎么实现的?(荣耀典藏版)
- linux串口工具 kermit,ubuntu串口工具(minicom、kermit)的使用
- java 线程的构造函数_深入理解Thread构造函数
- java计算机毕业设计化妆品销售网站源码+mysql数据库+系统+lw文档+部署
- 潜力无限的BTF,开启区块链金融新格局
- 自然语言处理的数学原理(一)
- 添加常用查询新增方法
- html鼠标滑过导航条展开导航条,jquery css实现鼠标滑过导航菜单栏动画效果
- 江苏省高等学校计算机一级成绩查询,江苏计算机等级考试成绩查询入口
- 用u盘安装ubuntu server 9.10 fail
- simditor图标不显示