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
問題は、_URLEncoding.default
_を使用していることです。 Alamofireは、使用しているHTTP method
に応じて_URLEncoding.default
_を異なる方法で解釈します。
GET
、HEAD
、および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)
_
クエリ文字列でパラメータを使用する場合は、次のように.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の著者によって提案されています。他の形式よりも簡潔であるため、スクリーンショットを参照してください:
オリジナルを参照してください こちら