.NET Web API HttpResponseMessage 模式?

2024-03-16

所以我看到了 Web API 2 控制器的返回HttpResponse和实际的物体。例子:

 public HttpResponseMessage Get(string id)
    {
        var app = apps.Single(c => c.Id == id);

        return new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ObjectContent<object>(app,
                Configuration.Formatters.JsonFormatter)
        };
    }

or

 public Application Get(string id)
    {
        return apps.Single(c => c.Id == id);
    }

我的问题是“正确”的方式是什么? #2 短得多,但是执行 #1 更好还是 #2 自动执行 #1 ...?


See this https://stackoverflow.com/questions/12633174/mvc-4-web-api-action-return-types-vs-httpresponsemessage and this https://stackoverflow.com/questions/15910867/asp-net-webapi-controller-return-typed-entity-or-httpresponsemessage所以问题。

响应将是相同的(HttpResponseMessage)在这两种情况下。

HttpResponseMessage允许您使用 HTTP 协议(​​例如,通过Headers属性)并统一您的返回类型。

返回 CLR 类型可能更具可读性,但您会失去返回具有不同状态代码的不同类型的灵活性,除非您使用dynamic or object这违背了返回特定类型的目的。

就我个人而言,我更喜欢使用IHttpActionResult(在 v2 中添加)并指定ResponseTypeAttribute关于预期返回类型的控制器操作以提高可读性。

[HttpGet]
[ResponseType(typeof(Portfolio))]
public IHttpActionResult GetPortfolio([FromUri] long id)
{
    // get portfolio

    return Ok(portfolio);
}

您可以使用默认值轻松操作响应消息(以 RESTful 方式)IHttpActionResult实现(参见OkResult多于)。避免建造HttpResponseMessage你自己也保持代码干净。Here http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results是一篇关于IHttpActionResult and here https://stackoverflow.com/questions/21758615/why-should-i-use-ihttpactionresult-instead-of-httpresponsemessage是一个有趣的对话HttpResponseMessage vs IHttpActionResult.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Web API HttpResponseMessage 模式? 的相关文章

  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • 在 C# 中将 ulong 映射到 long ?

    我正在尝试将 ulong 映射到 long 反之亦然 将 uint 映射到 int 反之亦然 如下所示 为了将值保存在具有签名类型的 MS SQL 数据库中仅限整数和大整数 我这样做是因为我必须检查 在数据库中 一个数字 uint ulon
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测
  • 使用 wmi 获取活动会话(Win32_LogonSession 还返回非活动/旧会话)

    有没有办法只显示 wmi 的活动会话 问题是 Win32 LogonSession 还显示不活动 断开连接的会话 ManagementScope scope new ManagementScope ManagementPath Defaul
  • 从 VS.NET 2008 转换到 2010 时 Windows 服务安装项目出现问题

    我正在尝试将解决方案从 VS NET 2008 转换为 2010 该解决方案包括一个 Windows 服务项目和一个安装 Windows 服务的安装项目 我在编译安装项目时遇到问题 我已经尝试按照教程从头开始几次here http msdn
  • 何时使用 IComparable 与何时使用IComparer

    我正在尝试找出我需要实现哪些接口 他们本质上都做同样的事情 我什么时候会使用其中一种而不是另一种 好吧 他们不是quite与IComparer
  • 如何以编程方式将 SMTP 服务器详细信息存储(保存)回 web.config

    搜索 StackOverflow 我发现这个问题是关于如何从 Web Config 检索 SMTP 设置 https stackoverflow com questions 2019175 how to programmatically r
  • 查询 dns 别名

    我找到了一些code http msdn microsoft com en us library system net dns gethostbyaddress VS 71 aspx来自 msdn 站点 下面包含代码 看起来它将返回给定服务
  • 回发后,asp.net 文本框不会填充

    我使用 ASP NET 和 C 几个文本框来计算输入的结果 Textbox2 输入了一个值 单击按钮后 Textbox1 就会被填充 我第一次输入该值时效果很好 但是第二次更改 Textbox2 中的值时 我发现在单击按钮进行调试时该值被分
  • 使用 iTextSharp CSSResolver 类的命名空间

    我正在使用 iTextSharp CSSResolver 类在 vb net 中使用外部 css 请让我知道使用的命名空间XMLWorkerFontProvider CssFilesImpl StyleAttrCSSResolver类 下面
  • If 语句中 Bool 计算错误

    只是为了好奇 我的代码有这个问题 e被评估为false 我知道通过查看数据库中的数据会得到错误 但 if 语句并不关心这一点 并假设这是真的 并试图抛出异常 有什么想法吗 edit 没有 在第 16 行末尾 价值false是正确的 我已经检
  • 在服务器桌面会话上捕获屏幕

    我开发了一个 GUI 测试框架 可以按计划对我们公司网站进行集成测试 当出现问题时 它会截取桌面等内容 它在专用 Windows Server 2008 上的登录用户上运行 无人值守 问题是在我已断开远程桌面会话连接的桌面上截取屏幕截图 我
  • 将 Repeater Container.ItemIndex 传递给 Javascript 函数

    在 C Asp Net 中 我需要将中继器出现索引传递到 Javascript 函数中OnClientClick从 ASP 按钮按下 这是我的代码
  • C# 中单个 & 符号的第二个含义是什么?

    我在 C 中使用了单个与号 来表示 检查second条件语句即使第一个是false 但以下似乎是不同的意思 of 总而言之 谁能解释一下如何i 1在下面的例子中有效吗 List
  • 部署项目 dll 导致“两者都存在类型 x”错误

    我有一个 Web 应用程序项目 一个业务逻辑项目和一个用于 Web 应用程序的 Web 部署项目 当我构建解决方案时 部署 Release bin 包含每个项目的 1 个 dll 因此我为 MyWeb dll MyWebBusiness d
  • 对 URL 进行编码 C#

    所以我有一个看起来像这样的 URL http www test com folder1 id 3 但基本上 当他们单击按钮时 我想在 URL 栏中显示与该 id 关联的值的名称 例如 id 3 是名为 Rollex 的手表 所以我想要读取
  • @RenderBody() 该怎么办?

    我有一个 ASP NET MVC 3 应用程序JQuery UI Tabs 我有一个主布局页面 layout cshtml 代码如下 大师 layout cshtml需要一个 RenderBody 代码 既然是必需的 那我该怎么办呢 我想我
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • ASP.NET 中 HTTP 缓存相关标头的有效含义

    我正在 ASP NET 2 0 中开发一个 Web 应用程序 其中涉及通过资源处理程序 ashx 提供图像 我刚刚实现了处理缓存标头和条件 GET 请求 这样我就不必为每个请求提供所有图像 但我不确定我是否完全理解浏览器缓存发生了什么 图像

随机推荐