【问题标题】:Return bool value from web api从 web api 返回 bool 值
【发布时间】:2023-04-09 14:39:01
【问题描述】:

我正在使用 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 中。

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

  • 这段代码可以改进吗?

【问题讨论】:

    标签: c# asp.net api httpresponse


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-14
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 2014-12-15
      • 2015-01-05
      • 2021-07-06
      相关资源
      最近更新 更多