首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回item、Json(item)和Ok(item)之间的IHttpActionResult差异

返回item、Json(item)和Ok(item)之间的IHttpActionResult差异
EN

Stack Overflow用户
提问于 2014-04-21 06:15:52
回答 2查看 10.3K关注 0票数 14

在ASP.NET WebApi 2中,以下各项有何不同:

代码语言:javascript
运行
复制
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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-21 14:59:49

这段返回result的代码不能编译,因为result没有实现IHttpActionResult...

代码语言:javascript
运行
复制
public <IHttpActionResult> GetItem(Guid id)
{
    // ... code ..., Item result = ....
    return result;
}

返回Json()总是返回HTTP200和JSON格式的结果,无论传入请求的Accept头中是什么格式。

代码语言:javascript
运行
复制
public <IHttpActionResult> GetItem(Guid id)
{
    // ... code ..., Item result = ....
    return Json(result);
}

返回Ok()将返回HTTP200,但结果将根据Accept请求头部中指定的内容进行格式化。

代码语言:javascript
运行
复制
public <IHttpActionResult> GetItem(Guid id)
{
    // ... code ..., Item result = ....
    return Ok(result);
}
票数 26
EN

Stack Overflow用户

发布于 2016-07-21 06:10:02

只是对前面的解释的补充:

函数的返回类型为:IHttpActionResult

因此,期望该方法返回一个IHttpActionResult,它是HttpResponseMessage的一个接口。HttpResponseMessage具有有用的属性,如标头、内容和状态代码。

因此,Ok(result)返回一个HttpResponseMessage,其中包含Ok状态码和内容,在本例中就是结果。同时,Json(result)将对象转换为json格式,也称为序列化,并将其作为内容放置在HttpResponseMessage中。

使用ASP.NET的web最好的地方是它创建了通过抽象传递Http响应的简单方法。最糟糕的是,在实际使用相对简单的方法之前,需要一点理解。

Here是关于序列化和json的更多信息。

有关IHttpActionResult的更多信息,请参阅Here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23188206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档