Скачайте файл или отправьте json методом web api - PullRequest
0 голосов
/ 22 сентября 2018

Я написал веб-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.

Итак, мой вопрос: можем ли мы отправить ответ json или загрузитьфайл в том же методе веб-API.

Любая помощь по этому вопросу приветствуется!

1 Ответ

0 голосов
/ 22 сентября 2018

Да, это легко достижимо.Вместо явного возврата MyClassData вы можете вернуть IActionResult, например:

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

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

   return Ok(myclassdata);
}

И File(...), и Ok(...) возвращают IActionResult, что учитывает динамизм, который выВы просите здесь.

Примечание: Вы также можете просто return Json(myclassdata), если хотите использовать JSON, но по умолчанию это будет JSON в любом случае и будет более гибким, например, при согласовании содержимого.

Подробнее см. Типы возвращаемых действий контроллера в ASP.NET Core Web API .

...