2017-06-06 98 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之外的任何内容,则表示创建用户时出错。错误细节应该在消息中。