Web Api 2根据accept标头确定控制器返回类型

时间:2015-09-07 06:51:40

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

我创建了一个web api 2控制器,可以从客户端调用,无论是下载存储在服务器本地磁盘中的文件,还是只获取该文件的URL。我想将此功能实现为一个控制器操作,并通过// from printf inside generateRandomList function i 0 r 16 i 1 r 4 i 2 r 11 i 3 r 20 i 4 r 5 i 5 r 14 i 6 r 3 i 7 r 6 i 8 r 17 // from second printf. 0, 16 1, 16 2, -712138747 3, 1 4, 5 5, 14 6, 3 7, 6 8, 17 确定结果。

如果客户端请求content-negotiation,它将返回其中包含application/json属性的json值。如果客户请求url它将是图像本身。

是否可以在一个控制器动作中执行它?

1 个答案:

答案 0 :(得分: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;
    }
}