从web api返回bool值

时间:2017-06-06 09:35:38

标签: c# asp.net api httpresponse

我正在使用Web Api 2创建1个用户。下面是代码

[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
    }
}

现在我的查询很少

  • 我们可以在HttpResponseMessage中返回布尔值true / false。我的意思是 在CreateErrorResponse中。

  • 检查用户是否获得更新的最佳方法是什么?

  • 此代码可以改进吗?

1 个答案:

答案 0 :(得分:4)

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

从技术上讲,您有以下选项

a)CreateErrorResponse将创建HttpError对象。

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

序列化响应将是

 {"Message":"False"}

b)或者你可以

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

回复将是

"False"

2)检查用户是否获得更新的最佳方法是什么? 3)这段代码可以改进吗?

在我看来,最好将api与REST建议对齐 http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

通常,REST post api会返回创建的资源。前 -

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