1

APIルートでパターンに従おうとしています。

これらはすべてGETリクエストです

/users                         -- get all users
/users/{userId}                -- get user by id
/users/email/{email}           -- get user by email

明らかに。ルートの最後の部分に /user@domain.com のようなものが含まれるため、3 つ目の問題が問題になります。別のドメインに移動しようとしていると見なされるため、ルートは処理されません (例: http://localhost/users/email/me@microsoft.com

POST でこれを機能させることができることはわかっています。/users/{email}/gedderdone などの他の組み合わせでこれを機能させることもできます。

...しかし、すべてのリソースで一貫したパターンに従おうとしています。

すなわち:

/people/{id}
/people/name/{name}
/people/ssn/{ssn}

電子メール アドレスでユーザーを取得するための REST エンドポイントをどのようにフォーマットすればよいですか? ユーザーを「取得」しているので、GETを使用したいと思います。

ありがとう :-)

4

3 に答える 3

0

リクエストでパラメーターを使用することを恐れないでください

例えば

/users
/users/{userid}
/users/email?address=me@microsoft.com

/users/1個人的には、ユーザーを「純粋な」リソースとして扱い、パラメーターを介してユーザーを取得する方法を区別する傾向があります(変更されない、一意の ID などを除く)。

/users/?by=email&value=me@microsoft.com
/users/?by=ssn&value=123345
/users/?by=shoesize&value=10

純粋にルート値によってリソースを識別しなければならないということは、REST にはありません。純粋なルート値パターンに固執し、複数のフィールドでユーザーを取得する必要があることがわかった場合、users/department/development/project/14567/location/dublin誰かが場所、プロジェクト、部門の順に呼び出すまで、クールに聞こえるクレイジーなルートをコーディングする必要があります。など

于 2013-10-31T20:38:05.380 に答える
0

「@」記号は、RFC3986に従って予約された記号です。したがって、パーセントでエンコードされた %40 として渡す必要があります。それ以外は無効です。

于 2013-10-31T20:56:28.297 に答える