0

私の RESTful API の背後にあるデータ モデルには、CreatedBy/ModifiedBy フィールドを持つエンティティがいくつかあります。このデータへの唯一のアクセスは API を介して行われるため、フィールドには、API へのリクエストを行っているユーザーのユーザー ID を入力する必要があります。

API によって公開されるモデルにこれらのフィールドを追加するか、すべての PUT/POST/DELETE リクエストでユーザー ID を含むリクエスト ヘッダーを期待することを検討しました。どのアプローチが最適か、または他のアプローチについての意見に興味があります。

すべてのリクエストに必要なため、ヘッダーで提供するという考えが好きで、情報を含む標準のリクエストヘッダーがあるかどうか、または一般的な x-header があるかどうか疑問に思っています。

from リクエスト ヘッダーを見てきました。ただし、リクエストを行っているユーザーの電子メール アドレスとして定義されているようで、ユーザー ID を渡す必要があります。

現在の実装では、Authorization ヘッダーを使用して、特定のユーザーに対してではなく、API を使用して呼び出し元のアプリケーションを認証します。

リクエストを行っているユーザーを識別するための情報を渡すために、どのヘッダーを使用しますか?

4

2 に答える 2

1

Authorization ヘッダーを拡張して、独自のパラメーターを追加できます。Digest と OAuth の両方の認可スキームがパラメータをサポートしています。基本スキームには、読み取り可能なユーザー資格情報が既にあります。何かのようなもの:

 Authorization: OAuth realm="Photos",
    oauth_consumer_key="dpf43f3p2l4k3l03",
    oauth_signature_method="HMAC-SHA1",
    oauth_timestamp="137131200",
    oauth_nonce="wIjqoS",
    oauth_callback="http%3A%2F%2Fprinter.example.com%2Fready",
    oauth_signature="74KNZJeDHnMBp0EMJ9ZHt%2FXKycU%3D",
    xoauth_user_guid="alganet"

ヤフー!OAuth 実装で同様のことを行いますが、別のコンテキストで行います。

http://developer.yahoo.com/oauth/guide/oauth-accesstoken.html .

ただし、これらのフィールドがパブリック API で何らかの方法で表示または公開されている場合、それらは RESTful リソースに属しており、常にヘッダーではなく本文で表す必要があります。メッセージ本文でユーザー名を取得する場合は、メッセージ本文も使用してユーザー名を POST する必要があります。

于 2013-01-10T17:52:53.807 に答える
0

HttpClientを使用できると仮定します

  HttpClient client = HttpClientManager.getNewClient();
  HttpMethod get = new GetMethod(...);
  get.addRequestHeader("x-newHeader", "value");

詳細はこちら

または、 setRequestParameterを使用してURLConnectionを使用します

于 2013-01-11T08:29:14.697 に答える