我写了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响应还是下载文件。
对此有任何帮助!
答案 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。