在Alamofire请求中发布和获取参数

时间:2018-05-11 06:51:05

标签: ios swift alamofire

我的项目中有一个问题: 这是我的网址

  

www.someapi.com/product/filter?range [柱] =价格&安培;范围[值] [LTE] = 7000&安培;范围[值] [GTE] = 1000&安培;偏移量= 10安培;限制= 10安培; LANG =烯

如您所见,GET方法参数

但我使用POST方法,所以帖子正文是

{"category_id":4017,"filter":[{"filter_id":"214","value_ids":["7632","6433"]}],"type":"2"}

那么可以在Alamofire中组合get和post参数吗?我在他们的github中寻找答案,但没有任何结果。

1 个答案:

答案 0 :(得分:0)

是的,您可以将查询字符串参数与POST正文混合使用。

另外,请注意查询参数不是GET特定的。只要您的API处理它,它就会起作用。

这不是Alamofire问题,而是与您的API设计有关

  • 如果API 不支持支持POST方法,则无法发送有效内容。
  • 如果API 处理查询字符串参数,则不会工作。

基本上,您的API应设计为处理查询字符串参数并支持POST方法,以便两者都能正常工作。

用法示例:

    let strURL = "www.someapi.com/product/filter?range[column]=price&range[value][lte]=7000&range[value][gte]=1000&offset=10&limit=10&lang=en"

    let payload: [String:Any] = ["category_id":4017,
                                 "filter":[["filter_id":"214",
                                            "value_ids":["7632",
                                                         "6433"]]],
                                 "type":"2"]

    Alamofire.request(strURL,
                      method: .post,
                      parameters: payload,
                      encoding: JSONEncoding.default,
                      headers: nil)