下载文件或通过Web API方法发送JSON

时间:2018-09-22 10:33:14

标签: c# asp.net-web-api asp.net-core asp.net-core-webapi

我写了Web API,它在其中返回/产生json响应。下面是相同的代码。

[HttpGet]
[Route("someapi/myclassdata")]
[Produces("application/json")]
public MyClassData GetMyClassData(int ID, int isdownload)
{
   myclassdata = myclassdataBL.GetMyClassData(ID);
   return myclassdata;

    //**Commented Code**
   //if(isdownload==1)
   //{
        //download file
   //}
   //else
   //{
        // send response
   //}
}

到现在为止一切正常。现在,我想基于“ isDownload ”参数中的值创建并下载文件。

因此,获取数据后是否需要下载文件,我想下载文件,否则我将发送json响应。

所以,我的问题是我们可以使用相同的Web api方法发送json响应还是下载文件。

对此有任何帮助!

1 个答案:

答案 0 :(得分:1)

是的,这很容易实现。您可以像这样返回MyClassData,而不是像这样显式返回IActionResult

public IActionResult GetMyClassData(int ID, int isdownload)
{
   myclassdata = myclassdataBL.GetMyClassData(ID);

   if (isDownload == 1)
       return File(...);

   return Ok(myclassdata);
}

File(...)Ok(...)都返回一个IActionResult,这可以满足您在此处要求的动态要求。

注意:如果您想强制使用JSON,也可以只使用return Json(myclassdata),但是默认情况下,无论如何这都是JSON,例如,内容协商。

有关更多详细信息,请参见Controller action return types in ASP.NET Core Web API