アプリケーションから適切なHttpコードと応答を返そうとしていますが、苦労しています。特定のhttp応答を返す方法は2つあるようです。
私がそれに対処したい方法は、HttpResponseException
:を投げることです。
public Information Get(int apiKey)
{
if (!_users.Authenticate(apiKey))
{
var response = new HttpResponseMessage();
response.StatusCode = (HttpStatusCode)401;
response.ReasonPhrase = "ApiKey invalid";
throw new HttpResponseException(response);
}
return _info.Get();
}
ただし、これを行うと、表示される応答は空の200応答にすぎません。
HttpResponseMessage
また、アクションメソッドのシグネチャを変更して、次のように返すこともできるようです。
public HttpResponseMessage Get()
{
if (!_users.Authenticate(apiKey))
{
return Request.CreateResponse((HttpStatusCode) 401, "ApiKey invalid");
}
return Request.CreateResponse((HttpStatusCode) 200, _info.Get());
}
私はそれを助けることができれば本当にこれをしたくありません、私はそれを毎回.でラップするのではなく、取得しようとしているオブジェクトとしてリターンタイプを持っている方がはるかに好きですHttpResponseMessage
。
最初のメソッドが、メッセージとともに401ではなく空の200を返す理由はありますか?