2017-06-06 120 views
0

我正在使用Web Api 2創建1個用戶。下面是代碼從web api返回bool值

[HttpPost] 
public HttpResponseMessage UpdateUserData(User user) 
{        
    try 
    { 
     //Code 
     . 
     . 
     user.Update(); 
     return Request.CreateResponse(HttpStatusCode.OK, true); 
    } 
    catch (Exception ex) 
    { 
     ExceptionLogger.LogException(ex); 
     return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "error"); 
    } 
} 

我想後面的代碼中調用這個方法就像

using (HttpClient client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://localhost:65486/"); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    var response = client.PostAsJsonAsync("api/Stock/UpdateUserData", userObject).Result; 

    if (response.IsSuccessStatusCode) 
    { 
     using (HttpContent content = response.Content) 
     { 
      Task<string> result = content.ReadAsStringAsync(); 
      string final = result.Result; 
     } 
    } 
    else 
    { 
     //code 
    } 
} 

現在我有幾個疑問

  • 我們可以返回布爾值true /在HttpResponseMessage假。我的意思是在CreateErrorResponse中的 。

  • 什麼是檢查用戶是否得到更新的最佳方法?

  • 此代碼是否可以改進?

回答

2

1)我們可以在HttpResponseMessage中返回布爾值true/false。我的意思是在CreateErrorResponse?

技術上你有以下選項

一)CreateErrorResponse將創建HttpError對象。

return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, false.ToString()); 

序列化反應會

{"Message":"False"} 

b)或可以

return Request.CreateResponse(HttpStatusCode.InternalServerError, false.ToString()); 

響應將是

"False" 

2)什麼是檢查是否最好的方法用戶ge t是否更新? 3)這個代碼可以改進嗎?

在我看來,最好是與REST推薦 http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

一般來說REST API後返回創建的資源調整你的API。 Ex-

[HttpPost] 
public HttpResponseMessage UpdateUserData(User user) 
{        
    try 
    { 
     // Validate user 
     // if invalid request return Request.CreateErrorResponse(HttpStatusCode.BadRequest, validationErrorMessage); 

     //Code to change user 
     user.Update(); 
     return Request.CreateResponse(HttpStatusCode.Created, user); 
    } 
    catch (Exception ex) 
    { 
     ExceptionLogger.LogException(ex); 
     return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "error"); 
    } 
} 

如果響應是除201之外的任何內容,則表示創建用戶時出錯。錯誤細節應該在消息中。