API呼び出しがリソース自体ではない(データストアから返されたリソースを含まない)応答を送信する場合は、名詞以外の動詞を使用する必要があります。
あなたは、このようなアクションメソッド公開しUserPasswordsControllerコントローラー持つことができます。あなたはその検証エンドポイントにフォームデータをPOSTう
routes.MapHttpRoute(
name: "UserPasswords",
routeTemplate: "api/v1/validate",
defaults: new { controller = "userpasswords" }
);
:
[HttpPost()]
public HttpResponseMessage Validate()
{
if (!this.Request.Content.IsFormUrlEncodedContent())
{
return this.Request.CreateErrorResponse(
HttpStatusCode.BadRequest,
"Body of request must be form URL encoded."
);
}
var parameters = this.Request.Content.ReadAsFormDataAsync().Result;
var userName = parameters["userName"];
var password = parameters["password"];
// TODO: Validate user name and password
var isValid = true;
if(!isValid)
{
return this.Request.CreateErrorResponse(
HttpStatusCode.Forbidden,
String.Format(null, "The password provided for {0} is not valid.", userName)
);
}
return this.Request.CreateResponse(HttpStatusCode.OK);
}
そして、このように登録したルートを持っているが検証するユーザー名とパスワードが含まれています。禁止状態のステータスはパスワードが無効であることを示し、パスワードが有効であればOKのステータスを返します。
RESTインターフェイスを初めて使用していて、実用的なアプローチを取りたい場合は、Web API Design - Crafting Interfaces that Developers Loveをご覧ください。
ありがとうAliostad。 Basic Authの詳細を見ると、必要なものではありません(特に欠点のリスト)。私たちは実際にユーザーにサインインするのではなく、現在サインインしているユーザーが自分のパスワードを知っているかどうかをチェックしています。 –