私はC#とHttpResponseMessageでサーバー検証をコーディングしています。特定のメッセージでクライアントに応答を返す必要があり、送信されたデータが有効ではありません。このリストから選択する必要がある応答コードはどれですか?サーバー検証 - 応答メッセージ?
https://msdn.microsoft.com/en-us/library/system.net.httpstatuscode(v=vs.110).aspx
私は、無効なデータを持っている分野を知っているように、私はまた、メッセージをカスタマイズできますか?
注:MVC 4、Visual Studioの2010
ここでは、私のポスト機能である:
// POST api/Default1
[HttpPost]
public HttpResponseMessage PostUserProfile(HttpRequestMessage req)
{
UserProfile up = new UserProfile();
string jsonContent = req.Content.ReadAsStringAsync().Result;
if (ModelState.IsValid)
{
up = JsonConvert.DeserializeObject<UserProfile>(jsonContent);
if (up.userName.Length <= 50 &&
up.email.Length <= 60)
{
db.UserProfiles.Add(up);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, up);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = up.UserId }));
return response;
}
else
{
// finish the server validation
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.InternalServerError, up);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = up.UserId }));
return response;
}
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
400(Bad Request)が1つです。 ModelBindingをまったく使用していないので、 'ModelState.IsValid'は常にtrueであることに注意してください。また、本当に[MVCのビルトインモデルバインド機能を使用する](https://stackoverflow.com/questions/18373202/asp-net-mvc-4-json-binding-to-the-view-model-nested) -object-error)です。 –
'req.CreateResponse(...)'はあなたの問題を解決するはずです。無効なフィールドを含むJSONや、間違っていることや解決方法などの説明を含め、好きなコンテンツで対応できます。この目的のために、 'string ErrorMessage'のようなプロパティを保持する新しいクラスを作成し、パラメータとして' .CreateResponse(...) 'を渡すことをお勧めします。 –
オピニオンのみ、コード400を返します - 間違ったリクエスト – Sparky