2012-02-06 17 views

答えて

78

URLはリソースそのものを示します。 「クライアント」は、操作できるリソースなので、ベースURLの一部である必要があります。/orders/view/client/23

パラメータは、リソースへのアクセスをパラメータ化するためのものです。これは、特に、投稿と検索:/orders/find?q=blahblah&sort=fooで始まります。パラメータとサブリソースの間には細い線があります:/orders/view/client/23/active versus /orders/view/client/23?show=active。私はサブリソースのスタイルと検索のための予約パラメータをお勧めします。

リソースの名前(URL)、リソースの状態(本文)、またはリソースの状態(本文)を含まないものに対してのみ、カスタムヘッダーを使用する必要があります。 、またはリソースに直接影響を与えるパラメータ(パラメータ)。カスタムヘッダーのリクエストに関する真のメタデータが残っています。

HTTPには、必要なものすべてをカバーする非常に幅広いヘッダーがあります。私が見たところでは、カスタムヘッダーが現れるのは、ユーザーの代わりに動作するシステムからシステムへの要求です。プロキシシステムはユーザーを検証し、ヘッダーに "X-User: userid"を追加し、システム認証情報を使用してエンドポイントにヒットします。受信側システムは、システムクレデンシャルがユーザの代わりに行動することを認可されたことを検証し、ユーザがそのアクションを実行する権限を有することを確認する。

+0

このような包括的な答えをありがとう!モバイルAPIにX-Userを使用しても、(ヘッダーを取り除く)悪意のあるプロキシを持つリスクはまだ高いですか? –

+1

いいえ、私が言及したX-Userの使用は、システムが第三者に代わって動作しているシステム間接続にあります。たとえば、ユーザーUはサーバーAと通信します。サーバーAは、「ユーザーUの代わりにこのアクションを実行する権限があるかどうかを確認するために資格情報を使用する」と言うX-ユーザーヘッダーを使用して、サーバーBに信任状を提示します。これはService Oriented Architecturesにあります。通常はHTTPSを使用しています。モバイルプラットフォームは、ほとんどの場合、ユーザー自身の行動であり、トランザクションに適切な第1者の資格情報を使用する必要があります。 – Nialscorva

+4

第3段落は、私がSO--)で読んだ最も有益な回答の1つです – Alistair77

2

のRESTのための標準がありません使用します使い方gカスタムヘッダとそれに続くビューはidであると仮定しているため、idを取り込んでその情報だけを生成する関数を持つことになります。

3

プロキシがそれらを通過するかどうかわからないので、私はカスタムヘッダーを使用しません。 URLベースの方法があります。

GET /受注/ビュー/クライアント/ 23

+1

カスタムヘッダーもお勧めしませんが、壊れたプロキシは理由ではありません。プロキシは壊れているので修正する必要があります。 –

1

間違いなくOK:

また
GET /orders/view/client_id/23 or 
GET /orders/view/?client_id=23 

OK:

GET /orders/view/23 or 

私も、これはOKだろうと思うだろう:

POST /orders/view 
(custom HTTP header) CLIENT_ID: 23 
+0

REST-ful POST応答は、Locationヘッダーが "/ orders/view/23"のように設定されたHTTP 303でなければなりません。 –

5

標準または慣習で情報を渡す方法が他にない場合は、カスタムヘッダーのみを使用します。 Darren102は、その値を渡す典型的な方法を説明しています。カスタムヘッダーを使用した典型的なパターンを使用することで、Apiはよりフレンドリーになります。これは、使用するケースがないことを意味するのではなく、最後の手段であり、HTTP仕様では処理されていないということです。

+0

誠意を持って同意する...タスクを達成するための標準的な方法があれば、ホイールを再発明しないでください。 –

3

いつ... REST APIのリクエスト部分でHTTPヘッダーを使用しますか?

認証:GUIDは、基本認証、カスタムトークン、などなど、 あなたは、PCI-DSSやその他のセキュリティルールが適用され、ドメイン間でトークンまたは他の認証のような情報を渡すことに巻き込ま場合Basic Authentication with a Guid token for REST api instead of username/password

ブラウザの履歴、プロキシログなどから簡単に再生できるURLから認証要素を削除する必要があるため、パラメータを埋めなければならない場合があります。

4

カスタムヘッダーは次のような利点があります。

  • は、ネットワークツール/スクリプトによって簡単に読み取ることができます(認証、メタ情報、...)
  • はありませんで、より安全な(セキュリティのものから無料のURLを保持しますブラウザ/プロキシキャッシュ)
  • は、クリーナーのURLを保持します:あなたは、部分的に処理要求の短所に関する詳細な情報を含めるようにカスタムヘッダーを使用することができます
+0

プロキシによってサイレントに削除/フィルタリングすることもできます – fusi

0

資源のよりよいキャッシュすることができますEnvelopingを使用するのは良い方法ではありません。ヘッダーはsecureです。

関連する問題