[英]REST API HttpClient return response good practice
我有返回對象的方法,問題是我不知道如何驗證錯誤並在MVC視圖中正確返回它
public async Task<object> GetUser()
{
//....
if (responseMessage.IsSuccessStatusCode)
{
return await responseMessage.Content.ReadAsAsync<User>();
}
if (responseMessage.StatusCode == HttpStatusCode.BadRequest)
{
return await responseMessage.Content.ReadAsAsync<Error>();
}
}
return null;
}
現在在我的控制器中,我正在獲取數據並嘗試返回正確的類型
var httpResult = await GetUser();
if (httpResult.GetType() == typeof (Error))
{
ModelState.AddModelError("", (httpResult as Error).ErrorDescription);
return View(model);
}
if (httpResult.GetType() == typeof (User))
{
var user = httpResult as User;
return View(User);
}
我不喜歡自己的if和邏輯,還有更好的解決方案嗎?
您可以嘗試這樣。 我過去和現在都成功使用了這種模式。
[DataContract]
public class OperationResult<T>
{
[DataMember]
public List<Error> Errors { get; set; }
[DataMember]
public T ResultObject { get; set; }
[DataMember]
public bool Success { get; private set; }
public OperationResult(List<Error> errors)
{
Errors = errors;
}
public OperationResult(T resultObject)
{
ResultObject = resultObject;
Success = true;
}
public OperationResult()
{
}
}
您可以從方法中返回此類型,並在返回時檢查Success
標志,如果為false,則讀取Errors
屬性,然后可以填充ModelState或返回專用的視圖模型等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.