簡體   English   中英

REST API HttpClient返回響應的良好做法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM