从web api返回bool值
问题描述:
我正在使用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中的 。
什么是检查用户是否得到更新的最佳方法?
此代码是否可以改进?
答
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之外的任何内容,则表示创建用户时出错。错误细节应该在消息中。