2017-09-15 9 views
1

認証手続き後にRESTfulオブジェクトをロードするためのベストプラクティスを知りたいと思います。認証後にRESTfulオブジェクトをロードする

たとえば、ログインした後に人、場所、その他のアカウント関連情報のリストを取得する必要があるアプリがあります。次のうちどれがベストプラクティスですか?

。アプリは、POST/API/V1 /ログインそれは返す必要があります呼び出した後:

{ 
    "token": "xxxxx.yyyyyyy.xzzzzzzzzz", 
    "persons": [ 
     {"id": 1, "name": "John"}, 
     {"id": 2, "name": "Paul"}, 
     {"id": 3, "name": "George"}, 
     {"id": 3, "name": "Ringo"} 
    ], 
    "places": [ 
     {"id": 1, "name": "London"}, 
     {"id": 2, "name": "New York"}, 
    ], 
    "lastLogin": "2017-09-10 13:00:00" 
} 

この方法で、彼らが呼び出しを個別に取得するために行う必要はありませんので、アプリ開発者にそれを容易にするために表示されます。しかし、それは緊密に結合されているようです。

b。それとも、ただ

{ 
    "token": "xxxxx.yyyyyyy.xzzzzzzzzz" 
} 

を返す必要がありますし、アプリは、たとえば使用して個別に他のデータをロードする必要があり、

GET /api/v1/persons 
GET /api/v1/places 
GET /api/v1/lastlogin 

このメソッドは、クリーナーのようですが、それはアプリ開発者のための難しいかもしれません。特に、たくさんの異なるモデルを読み込んでいる場合は、リクエストのオーバーヘッドが増えます。

。または、トークンを返すだけの/api/v1/loginWithDataという名前のコールと、トークンを返すだけの別のトークン/api/v1/loginを持っていればいいですか?このメソッドは両方の利点がありますが、api名前空間が乱雑になります。

私はそれらから学ぶことができるように説明するリンクを送ることができれば本当に感謝します。

答えて

1

第三者のアプリケーションについて話している場合は、ユーザー資格情報と認証トークンを使用しないでください。彼らはユーザーからアクセスキーを取得するだけで、いくつかの特権を与えたり、より限定されたAPIでアクセスしたりすると、すべてのリクエストがユーザーによって署名されます。ステートレストークンではなくセッションについて話している場合は、OAuthとFieldingの論文をチェックして基礎を学ぶ必要があります。

実際のクライアントを開発してサードパーティのアプリケーションではない場合、トークンは認証ヘッダーまたは本文ではなくクッキーで移動する必要があります。私はあなたのデータソースへのGET /api/v1/user/136リンクを与えるPOST /api/v1/authリンクを使用します。または、カスタムMIMEタイプを使用する場合は、空のボディを返します。

+0

私もあなたに同意する傾向があります。しかし、それは一般的な練習ですか、それとも単純ですか? –

+0

@aljofどの部分? – inf3rno

+0

あなたが言及したところ:「GET/api/v1/user/136を提供するPOST/api/v1/authリンクを使用します。私は私の質問は、私のアプリが使用するデータを含むPOSTの応答を持っていない代わりに、別の要求を使用して、データを取得するアプリを持っている理由ですね? –

関連する問題