Заменить ответ 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
        })
    }
}
→ Ссылка