1

私は REST 設計に慣れていないので、ここでいくつかの指針が欲しいです。

これが私がこれまでに持っているものです:

GET    /api/users                 //all users
GET    /api/users/123             //specific
GET    /api/users/me              //get your own profle 
POST   /api/users/me/session      //start new session (login)
DELETE /api/users/me/session      //ends the current session (logout)

ここでセッション/ログイン/アウトについて疑問に思っています。私はここで正しいと考えていますか、それとも他の方法でREST風に設計する必要がありますか?

また、ユーザーの登録は次のようになります。

POST /api/users

新しいセッションも開始しても?

4

2 に答える 2

1

REST はステートレスです。つまり、接続されたアプリケーションでサーバーがアクティブな状態を維持する必要はありません。ロイ・フィールディングを引用するには:

All REST interactions are stateless. That is, each request
contains all of the information necessary for a connector to
understand the request, independent of any requests that may
have preceded it

ユーザーを認証する一般的な方法は、「シークレット」またはアクセス トークンをリクエストの認証ヘッダーに追加することです。これは、OAuthなどで実装できます。

また、認証ヘッダーを追加する場合、以下を区別する必要はありません。

GET    /api/users/123             //specific
GET    /api/users/me              //get your own profile 

要求されたユーザーのトークンが認証ヘッダーのトークンと一致するかどうかをサーバー側で簡単に確認できるため、「me」プロファイルを返します。POST /api/users実際、システムにユーザーを追加するためのアプローチです。したがって:

GET    /api/users     //all
GET    /api/user/{id} //a user
PUT    /api/user/{id} //update
POST   /api/user      //Add new user
DELETE /api/user/{id} //Remove user
于 2013-08-20T08:16:21.713 に答える
1

セッションという用語を避け、認証を使用することをお勧めします(認証の場合と同様)。セッションという用語は、通常は REST に反するサーバー側のセッションの印象を与えます。

以下は良いです:

GET    /api/users                 //all users
GET    /api/users/123             //specific
GET    /api/users/me              //get your own profile 

認証のために、あなたはこれを持っているかもしれません:

POST   /api/auth                  //username/password required. auth_token is sent back
DELETE /api/auth                  //auth_token is sent in HTTP header
于 2013-08-20T08:14:48.713 に答える