web-dev-qa-db-ja.com

Alamofire URLパラメーターを追加する方法

URLパラメーターを渡すPostmanを使用した作業シナリオがあります。今、SwiftのAlamofireで実行しようとすると、動作しません。

AlamofireでこのURLをどのように作成しますか? http:// localhost:8080 /?test = 12

    _url = "http://localhost:8080/"
    let parameters: Parameters = [
        "test": "123"
        ]

    Alamofire.request(_url,
                      method: .post,
                      parameters: parameters,
                      encoding: URLEncoding.default,
                      headers: headers
24
Chris G.

問題は、_URLEncoding.default_を使用していることです。 Alamofireは、使用しているHTTP methodに応じて_URLEncoding.default_を異なる方法で解釈します。

GETHEAD、およびDELETE要求の場合、_URLEncoding.default_はパラメーターをクエリ文字列としてエンコードし、URLに追加しますが、他の方法( POST)として、パラメーターはクエリ文字列としてエンコードされ、HTTP要求の本文として送信されます。

POSTリクエストでクエリ文字列を使用するには、encoding引数をURLEncoding(destination: .queryString)に変更する必要があります。

Alamofireがリクエストパラメータを処理する方法の詳細については、こちらをご覧ください こちら

コードは次のようになります。

_   _url = "http://localhost:8080/"
    let parameters: Parameters = [
        "test": "123"
        ]

    Alamofire.request(_url,
                      method: .post,
                      parameters: parameters,
                      encoding: URLEncoding(destination: .queryString),
                      headers: headers)
_
75
Pedro Castilho

クエリ文字列でパラメータを使用する場合は、次のように.QueryStringをURLEncodingとして使用します(どこかにヘッダーがあると仮定します)

let _url = "http://localhost:8080/"
let parameters: Parameters = [
    "test": "123"
    ]

Alamofire.request(_url,
        method: .post,
        parameters: parameters,
        encoding: URLEncoding.queryString,
        headers: headers)

この形式は、Alamofireの著者によって提案されています。他の形式よりも簡潔であるため、スクリーンショットを参照してください: Excerpt from website

オリジナルを参照してください こちら

17
André