Alamofire 框架封装与使用

1. Alamofire github 地址: 

Alamofirehttps://github.com/Alamofire/Alamofire

​​​​​​​2. 终端切换到项目文件夹, 执行指令 pod init , 项目文件夹中, 打开 Podfile 文件,写入库名称

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target '测试-01-Alamofire' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for 测试-01-Alamofire
  pod 'Alamofire'
end

3. 回到终端,输入指令 pod search Alamofire -> pod help -> pod install --no-repo-update, 下载完成库

4. 测试请求方法

    /// 网络请求
    /// - Parameters:
    ///   - method: GET / POST
    ///   - URLString: URLString
    ///   - parameters: 参数字典
    ///   - finished: 完成回调
    private func request(method: HTTPMethod, URLString: String, parameters: [String: Any]?, finished: @escaping requestCallBack){
        AF.request(URLString, method: method, parameters: parameters).responseJSON{ response in
            switch response.result{
            case let .success(data):
                finished(data,nil)
                break
            case let .failure(error):
                finished(nil,error)
                break
            }
        }
    }

5. 测试上传文件方法

///上传文件
    private func upload(URLString: String, data: Data, name: String,  parameters: [String: Any]?, finished: @escaping requestCallBack){
        
        var parameter = parameters
        //如果追加 token 失败,直接返回
        if !appendToken(parameters: &parameter){
            // token 无效
            finished(nil,NSError(domain: "cn.cast.error", code: -1001, userInfo: ["message":"token 为空"]))
            return
        }
        
        /**
          1. data 要上传文件的二进制
          2. name 是服务器定义的字段名称 - 后台接口文档会提示
          3. fileName 是保存在服务器的文件名,但是:现在通常可以随便写,后台会做一些处理
            - 根据上传的文件,生成 缩略图,中等图,高清图
            - 保存在不同路径,并且自动生成文件名
            - fileName 是 HTTP 协议定义的属性
              
          4. mimeType  / contentType: 客户端通知服务器,二进制数据的准确类型
            - 大类型 / 小类型
              * image/gif  image/jpg image/png
              * text/plain text/html
              * application/json
            - 服务器不准确的类型
              * application/octet-stream
         */
        //TODO
//        post(URLString, parameters: parameter, headers: nil, constructingBodyWith: { formData in
//            formData.appendPart(withFileData: data, name: name, fileName: "test", mimeType: "application/octet-stream")
//        }, progress: nil) { _, result in
//            finished(result,nil)
//        } failure: { _, error in
//            print(error)
//            finished(nil,error)
//        }
        //2>上传文件
        AF.upload(multipartFormData: { multipartFormData in
            //拼接上传文件的二进制数据
            multipartFormData.append(data, withName: name, fileName: "test", mimeType: "application/octet-stream")
            //遍历参数字典,生成对应的参数数据
            if let parameter = parameter {
                for (k, v) in parameter {
                    let str =  v as! String
                    let strData = str.data(using: .utf8)!
                    // data 是 v 的二进制数据 name 是 K
                    multipartFormData.append(strData, withName: k)
                }
            }
        }, to: URLString)
        .responseJSON { response in
            print(response.result)
            switch response.result{
            case let .success(data):
                //完成回调
                finished(data,nil)
                break
            case let .failure(error):
                //在开发网络应用中的时候,错误不要提示给用户,但是错误一定要输出
                print(error)
                finished(nil,error)
                break
            }
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用第三方库和框架时,可以选择以下几个常用的库和框架,它们提供了封装好的API调用方法,可以简化与API接口的集成过程: 1. Requests(Python):Requests是Python编程语言中一个非常流行的库,用于发送HTTP请求。它提供了简洁易用的API,可以轻松地发送GET、POST等各种类型的请求,并处理响应数据。您可以使用Requests库来调用API接口,并处理返回的数据。 2. Retrofit(Java):Retrofit是一个针对Android平台的RESTful API库。它通过注解和接口定义的方式,将HTTP请求映射到Java方法上,使得调用API变得简单和直观。Retrofit还提供了一些便捷的功能,如请求拦截器、错误处理等。 3. AlamofireSwift):AlamofireSwift语言中常用的网络请求库,专门为iOS和macOS平台设计。它提供了优雅、简洁的API,使得发送网络请求变得更加方便。您可以使用Alamofire来调用API接口,并处理返回的JSON数据。 4. OkHttp(Java):OkHttp是一个高效、可靠的HTTP客户端库,适用于Android和Java应用程序。它提供了简单易用的API,支持同步和异步请求,并具有连接池、缓存、重试等功能。您可以使用OkHttp来调用API接口,并处理返回的响应数据。 这些库和框架都具有广泛的用户群体和良好的社区支持,您可以通过查阅它们的官方文档和示例代码,了解如何使用它们来调用API接口。 请注意,具体选择哪个库或框架,取决于您所使用的编程语言和开发平台。在选择之前,建议您仔细阅读官方文档,了解其功能、特点和适用范围,以便选择最适合您需求的库或框架。 希望这些推荐对您有所帮助!如果您有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hanyang Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值