Заменить ответ Controller на новый
создаю проект на:
- c# asp net core
- net8.0 (stable)
В проекте, использую Controllers исключительно для api части.
Хотелось, чтобы ответы представляли собой целую единую систему.
Подскажите пожалуйста, как можно заменять ответы контроллеров?
К примеру:
[ApiController]
[ApiVersion("1.0")]
[Route("api/v{version:ApiVersion}/[controller]/[action]")
public class CustomController : ControllerBase
{
[HttpGet]
public async Task<CustomAnswerModel> GetAnswer()
{
return await _database....;
}
}
В ответе получим класс CustomAnswerModel.
Пример ответа:
{
"key_1": "value_1",
"key_2": "value_2",
...
}
Однако, хотелось бы, чтобы ответ был примерно такой:
{
"success": {
"key_1": "value_1",
"key_2": "value_2",
...
}
}
Подскажите пожалуйста, как можно заменить существующий ответ на новый?
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Почти в любом из типов фильтров можно изменить результат.
Однако если нужно только изменить результат можно воспользоваться ResultFilter
Например:
public class SampleResultFilter : IResultFilter
{
public void OnResultExecuting(ResultExecutingContext context)
{
context.Result = new ObjectResult(new {
success = context.Result
})
}
}