Alamofire入门笔记

新人开始学习IOS开发,今天看了Alamofire的基本命令,参考了官网,总结一下,官方文档如下。可以用cocapods引入alamofire库:https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md发送请求:AF.request("<url>").reponse { … }此方法的完整定义:open func request<Parameters: Encoda
摘要由CSDN通过智能技术生成

新人开始学习IOS开发,今天看了Alamofire的基本命令,参考了官网,总结一下,官方文档如下。可以用cocapods引入alamofire库:

https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md

  1. 发送请求:
AF.request("<url>").reponse {
   }

此方法的完整定义:

open func request<Parameters: Encodable>(_ convertible: URLConvertible,
                                         method: HTTPMethod = .get,
                                         parameters: Parameters? = nil,
                                         encoder: ParameterEncoder = URLEncodedFormParameterEncoder.default,
                                         headers: HTTPHeaders? = nil,
                                         interceptor: RequestInterceptor? = nil) -> DataRequest

第一行的例子其实使用的是这个简单的定义:

open func request(_urlRequest: URLRequestConvertible, 
                  interceptor: RequestInterceptor?=nil) ->DataRequest
  1. 可以使用Modifier来自定义请求
AF.request("https://httpbin.org/get", requestModifier: {
    $0.timeoutInterval = 5 }).response(...)

请求就写在闭包表达式里面。

AF.request("https://httpbin.org/get") {
    urlRequest in
urlRequest.timeoutInterval=5
urlRequest.allowsConstrainedNetworkAccess=false}
.response(...)
  1. 往请求里面添加参数
    参数必须是Encodable类型,并且满足ParameterEncoder协议。如下例子就是创建一个Login请求的例子:
struct Login: Encodable {
   
    let email: String
    let password: String
}

let login = Login(email: "test@test.test", password: "testPassword")

AF.request("https://httpbin.org/post",
           method: .post,
           parameters: login,
           encoder: JSONParameterEncoder.default).response {
    response in
    debugPrint(response)
}

encoder有两种,一种是JSON格式的JSONParameterEncoder,另一种是URLEncodedFormParameterEncoder

  1. 通过URL编码格式发送请求
    通过URL发送请求的API参数不同,参数有:(请求路径、请求参数(可选)、请求编译器(.methodDependent/.queryString/.httpBody)),编译器根据请求的Http类型决定。

例如POST请求:
let parameters: [String: [String]] = [
“foo”: [“bar”],
“baz”: [“a”, “b”],
“qux”: [“x”, “y”, “z”]
]

// All three of these calls are equivalent
AF.request("https://httpbin.org/post", method: .post, parameters: parameters)
AF.request("https://httpbin.org/post", method: .post, parameters: parameters, encoder: URLEncodedFormParameterEncoder.default)
AF.request("https://httpbin.org/post", method: .post, parameters: parameters, encoder: URLEncodedFormParameterEncoder(destination: .httpBody))

// HTTP body: “qux[]=x&qux[]=y&qux[]=z&baz[]=a&baz[]=b&foo[]=bar”

  1. URLEncodedFormEncoder
    从Swift4.x开始,对字典采用哈希算法会导致在传入Collection类型的时候内部排序混乱,可以使用URLEncodedFormEncoder来对需要编码的键值对进行排序。
let encoder = URLEncodedFormParameterEncoder(encoder: URLEncodedFormEncoder(alphabetizeKeyValuePairs: false))

Format的传参根据需要进行编码的类型不同而不同,每一个参数对应的方法也不同,具体可以参考官方文档:
https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#manual-authentication

  1. 通过JSON编码发送请求
    通过JSON发送请求似乎就没有URL那么麻烦了。编码器的种类有3种,都是可以根据名字知道意思的。例子如下:
let parameters: [String: [String]] = [
    "foo": ["bar"],
    "baz": ["a", "b"],
    "qux": [
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值