私は this 質問を読みましたが、私の質問には回答しませんでした。
私にとってヘッダーとパラメーターはどちらも辞書ですが、パラメーターが_[String : String]
_であるのにヘッダーが_[String : AnyObject]?
_であるという違いがあります。そのため、パラメーターも文字列の場合は、ヘッダー内でそれらを送信しますcould ( 'x-'プレフィックスを使用して、それらが標準ヘッダーではないことを示します)これは一般的ですが、良い方法ではありません。
headers
とparameters
には他に違いがありますか?parameters
を使用して、他のどのような非文字列型を送信しますか?Alamofire Request
method
_public func request(
method: Method,
_ URLString: URLStringConvertible,
parameters: [String: AnyObject]? = nil,
encoding: ParameterEncoding = .URL,
headers: [String: String]? = nil)
-> Request
{
return Manager.sharedInstance.request(
method,
URLString,
parameters: parameters,
encoding: encoding,
headers: headers
)
}
_
例として、ヘッダーを介して["x-ios-version" : UIDevice.currentDevice().systemVersion]
またはビルドバージョンを渡す人々を見てきました
ここに違いのリストがあります:
それらは異なる目的のために設計されています。ヘッダーにはメタ情報が含まれ、パラメーターには実際のデータが含まれます。
サーバー側は、パラメータ名/値を自動的にアンエスケープ/デコードします。これはヘッダー名/値には適用されません。
ヘッダー名/値は、クライアント側で手動でエスケープ/エンコードし、サーバー側で手動でエスケープ解除/デコードする必要があります。 Base64エンコーディングまたはパーセントエスケープがよく使用されます。
パラメーターはURLのエンドユーザー(クエリパラメーター)から見ることができますが、ヘッダーはエンドユーザーに表示されません。
チャットでのロブとの議論から:
基準は、それがaboutリクエストであるか、またはaboutクライアントである場合です。 、ヘッダーが適切です。
しかし、それ自体が要求の内容(たとえば、サーバーから要求しているもの、返されるアイテムを識別するいくつかの詳細、Webサーバーに保存されるいくつかの詳細など)であれば、それはパラメータ。
例として:
パラメータ
商品の画像をリクエストしているとします。製品IDは1つのパラメータである場合があります。画像サイズ(サムネイルとフルサイズ)は、別のパラメーターである可能性があります。製品IDと要求された画像サイズは、要求のコンテンツの一部として提供される「詳細」(またはパラメーター)の例です。
ヘッダー
しかし、リクエストがJSONまたはx-www-form-urlencodedであるようなものは、リクエストのコンテンツではなく、リクエストに関する情報です(espは、Webサービスが本文の解析方法を知るために必要なので、リクエスト)。それがヘッダーである理由です。