我使用的是asp.net網頁api,我不知道我是否做錯了什麼,但是我發現它出於某種原因使用DataAnnotations進行WebApi vs MVC驗證更加困難。驗證對於WebApi?
例如,如果我想在非字符串上使用必需的驗證器,我必須使用帶有IsRequired的DataContract,我發現它會增加混亂。
我還發現,如果數據註釋無法驗證我真的沒有收到錯誤(RestSharp認爲一切正常)。
我想知道人們使用WebApi的DataAnnotations以外的任何東西嗎?我知道在MVC中有.net的Fluent Validation,但不確定它是否適用於WebApi。
編輯
我在評論的鏈接有點糊塗了基礎。
在第一部分中,他們有這個
if (ModelState.IsValid)
{
// Do something with the product (not shown).
return new HttpResponseMessage(HttpStatusCode.OK);
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
我想Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
將所有的模型狀態錯誤送回去。
但後來它去
處理驗證錯誤
的Web API並當 驗證失敗時不會自動錯誤返回給客戶端。由控制器的操作來檢查模型 狀態並做出適當的響應。
我對上述行感到困惑,就像我說過的,我認爲CreateErrorResponse正在處理該行。
對不起,如果我錯了,但我覺得這個鏈接很有用:http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet- web-api – Vladimir
@VladimirFrolov - 非常感謝,但我對某些東西有些困惑。我將以OP結束。 – chobo2
關於處理驗證錯誤:教程中提出了兩種方法。正如你所說,第一個是控制器內部的Request.CreateErrorResponse。第二種是將過濾器屬性應用於控制器或使用全局過濾器。過濾器內部類似於'actionContext.Request.CreateErrorResponse'。 「Web API不會自動向客戶端返回錯誤」意味着在默認配置(即沒有過濾器或模型狀態檢查控制器內部)的情況下,您將不會獲得驗證錯誤信息。 – Vladimir