【问题标题】:Web Api 2 determine controller return type based on accept headerWeb Api 2 根据接受标头确定控制器返回类型
【发布时间】:2015-09-07 15:50:15
【问题描述】:

我创建了一个 web api 2 控制器,可以从客户端调用它来下载存储在服务器本地磁盘中的文件还是只获取该文件的 url。我想将此功能实现到一个控制器操作中,并通过content-negotiation 确定结果。

如果客户端使用application/json 请求,它将返回带有url 属性的json 值。如果客户端请求image/*,它会得到图像本身。

可以在一个控制器动作中完成吗?

【问题讨论】:

  • 为什么你想对不同的任务使用一个动作?为什么不使用参数来帮助您确定结果应该是什么?
  • 最初,我想利用内容协商,使其符合 RESTFul 设计。

标签: c# asp.net rest asp.net-web-api


【解决方案1】:

为什么不呢?

public IHttpActionResult SomeAction()
{
    switch(Request.Headers.Accept.ToString())
    {
        case "application/json":
            // Return the whole DTO with the image URI
            break;

        case "image/jpeg":
            // Build a response containing a StreamContent 
            // or ByteArrayContent
            break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2013-04-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多