私はWCF webapiアプリケーションを作成中で、電子メールアドレスが取得されているかどうかを確認する必要があります。これはクライアント側のコードがPUT
を試す前に行うことができるクエリである必要があります。WCF WebApi、IsThisTakenクエリを処理する正しい方法は何ですか?
私がやっていることは、HTTPステータスコードと組み合わせてHEAD
を使用することです。私はそれが必要な単純なイエス/ノーレスポンスなので、それをやり遂げる方法を少し不明です。したがって、HttpResponseExceptions
を使用して関連するステータスコードを返しました。
[WebInvoke(Method = "HEAD", UriTemplate = "{email}")]
[RequireAuthorisation]
public void IsEmailAddressTaken(string email)
{
if (!Regex.IsMatch(email, Regexes.EmailPattern))
{
throw new RestValidationFailureException("email", "invalid email address");
}
if (_repository.IsEmailAddressTaken(email))
{
throw new HttpResponseException(HttpStatusCode.OK);
}
throw new HttpResponseException(HttpStatusCode.NoContent);
}
これはちょうど私の右の「臭い」ではありません。
まずは、このようなはい/いいえの操作を正しい方法で行うつもりですか?
第2に、例外をスローする代わりに関連するステータスコードを返す方法がありますか? 2番目の質問TO
ANSWER
私の2番目の質問への答えはちょうど方法は、私はそれだけで "存在" のためにOKを返すために大丈夫だと思うHttpResponseMessage
[WebInvoke(Method = "HEAD", UriTemplate = "{email}")]
[RequireAuthorisation]
public HttpResponseMessage DoesResourceExist(string email)
{
if (!Regex.IsMatch(email, Regexes.EmailPattern))
{
return new RestValidationFailure("email", "invalid email address");
}
if (_repository.IsEmailAddressTaken(email))
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
return new HttpResponseMessage(HttpStatusCode.NotFound);
}
ありがとう。私はちょうどそこに自分自身を持っていただろう:)私はおそらくあなたがこの答えを入力していたとして私の質問に私の解決策を追加していたと思う。 –