私はモバイルクライアント用の一連のWebサービスに取り組んでいます。要件では、すべてのリクエストに含まれ、特定のリクエストに格納され、他のリクエストで結果をフィルタリングするために使用される一意のデバイスIDが必要です。
すべてのリクエストに含まれるので、カスタムHTTPヘッダーに入れることを提案しました。そのため、特定のデータがヘッダーにあるのか、他のデータと一緒にあるのかを判断するためにどの基準を使用するのか疑問に思い始めましたリクエスト本文。
そのような基準はありますか?
私はモバイルクライアント用の一連のWebサービスに取り組んでいます。要件では、すべてのリクエストに含まれ、特定のリクエストに格納され、他のリクエストで結果をフィルタリングするために使用される一意のデバイスIDが必要です。
すべてのリクエストに含まれるので、カスタムHTTPヘッダーに入れることを提案しました。そのため、特定のデータがヘッダーにあるのか、他のデータと一緒にあるのかを判断するためにどの基準を使用するのか疑問に思い始めましたリクエスト本文。
そのような基準はありますか?
回答:
情報が重要な場合は、それを身体に入れる必要があります。
どうして?
行は多少ぼやけていますが、私にとっての経験則は次のとおりです。ビジネスロジックが機能するデータは本文にあるべきであり、メタデータはヘッダーに入れることができる/すべきです。
別の見方をすると、特定の種類のリクエストでのみ表示されるデータは本文にあり、アプリケーション全体で一貫して処理されるデータはヘッダーに入力する必要があります。
さらに別の観点は次のとおりです。たとえば、アプリケーションではなくルーター/ファイアウォールによって、データの一部がグローバルに処理されると想像できますか?はいの場合、おそらく本文ではなくヘッダーに入れる必要があります。
これらのルールを適用するいくつかの例は次のとおりです。
一意のデバイスIDについての質問に戻ります。それがどこでも一貫した方法で使用されている場合(たとえば、ロギングのみ)、ヘッダーに配置できます。ただし、エンドポイントに応じてさまざまな方法で要求をフィルタリングするために使用する場合は、本文に配置することをお勧めします。もちろん、両方のユースケースがある場合は、APIユーザーに同じデータを2か所に配置させるのではなく、ただ1つの方法(おそらくヘッダー)を渡すようにして、どちらかを許可するというジレンマを与えることをお勧めします一貫性のない入力または何らかの検証の実装。
クライアント要求の内容。同じサーバーへの複数のリクエストで変更されないものはHEADERの一部になります。たとえば、資格情報、リクエストごとに頻繁に変更されるその他はBODYの一部になります。
または
メッセージ/本文コンテンツのプロパティはヘッダーに入ります。例)エンコードタイプ、コンテンツ長、コンテンツタイプ。
そして
あなたの場合、フィルタパラメータのようなものは、URLにクエリ/リクエストパラメータとして追加する必要があります。
/mobiles?type=MOTO&colour=black
安らかなサービスでは、URL自体がオブジェクトを参照します
/conferences/{conference_id}
->特定の会議を指します