美文网首页
Alamofire请求参数编码

Alamofire请求参数编码

作者: 冷武橘 | 来源:发表于2022-05-04 15:41 被阅读0次

    一、URLEncodedFormParameterEncoder

    参数拼接到url后面或者放在body里

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

    queryString: https://httpbin.org/get?foo=bar

    • methodDependent 当请求方式是get,head,put,参数直接拼接到 url后面;当请求是post等其它请求方式时,,参数放到body里面
    • queryString 参数拼接到url后面,get和post请求都可以
    • httpBody 参数放到body里面,get没有请求体不可以,必须是post

    URLEncodedFormParameterEncoder.default和destination: .methodDependent是等效的

    1、下面三种请求例子在get请求中是完全等价的

    let parameters = ["foo": "bar"]
    AF.request("https://httpbin.org/get", parameters: parameters) 
    AF.request("https://httpbin.org/get", parameters: parameters, encoder: URLEncodedFormParameterEncoder.default)
    AF.request("https://httpbin.org/get", parameters: parameters, encoder: URLEncodedFormParameterEncoder(destination: .methodDependent))
    

    2、拼接到url后面

    AF.request("https://httpbin.org/get", method: .get, parameters: self.parmeters, encoder:URLEncodedFormParameterEncoder(destination: .queryString))
    

    3、拼接到body后面

    AF.request("https://httpbin.org", method: .post, parameters: self.parmeters, encoder:URLEncodedFormParameterEncoder(destination: .httpBody))
    

    4、同样下面三种请求例子在post请求中是完全等价的

    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))
    

    二、JSONParameterEncoder

    将参数json的格式编码到httpbody里面(这里大多数是指post请求,get请求没有httpbody

    HTTP body: {"baz":["a","b"],"foo":["bar"],"qux":["x","y","z”]}

    AF.request("https://httpbin.org/post", method: .post, parameters: parameters, encoder: JSONParameterEncoder.default)
    AF.request("https://httpbin.org/post", method: .post, parameters: parameters, encoder: JSONParameterEncoder.prettyPrinted)
    AF.request("https://httpbin.org/post", method: .post, parameters: parameters, encoder: JSONParameterEncoder.sortedKeys)
    
    

    相关文章

      网友评论

          本文标题:Alamofire请求参数编码

          本文链接:https://www.haomeiwen.com/subject/ejznyrtx.html