在ASP.NET WebApi 2中,以下内容之间有什么区别:
public <IHttpActionResult> GetItem(Guid id)
{
// ... code ..., Item result = ....
return result;
}
public <IHttpActionResult> GetItem(Guid id)
{
// ... code ..., Item result = ....
return Json(result);
}
public <IHttpActionResult> GetItem(Guid id)
{
// ... code ..., Item result = ....
return Ok(result);
}
答案 0 :(得分:25)
此代码返回result
不会编译,因为result
没有实现IHttpActionResult
...
public <IHttpActionResult> GetItem(Guid id)
{
// ... code ..., Item result = ....
return result;
}
返回Json()
始终返回HTTP 200,结果为JSON格式,无论传入请求的Accept标头中的格式是什么。
public <IHttpActionResult> GetItem(Guid id)
{
// ... code ..., Item result = ....
return Json(result);
}
返回Ok()
会返回HTTP 200,但结果将根据Accept请求标头中指定的内容进行格式化。
public <IHttpActionResult> GetItem(Guid id)
{
// ... code ..., Item result = ....
return Ok(result);
}
答案 1 :(得分:1)
只是对先前解释的补充:
您的功能的返回类型为:IHttpActionResult
因此,期望方法返回IHttpActionResult
,HttpResponseMessage
是HttpResponseMessage
的接口。 Ok(result)
具有有用的属性,例如标题,内容和状态代码。
因此,HttpResponseMessage
会返回Ok
Json(result)
状态代码和内容,在这种情况下是结果。同时,HttpResponseMessage
将对象转换为json格式,即序列化,并将其作为内容放在 Order.find({patient:req.user._id})
.populate({
path:'doctor',
populate:{
path:'specialization',
select:'-_id'
},
})
中。
使用ASP.NET的web api的最佳之处在于它创建了通过抽象传递Http响应的简单方法。最糟糕的是,在实际使用相对简单的方法之前需要一些理解。
Here是关于血清化和json的更多信息
Here更多关于IHttpActionResult的信息