Как различить guish маршрутизацию к одному и тому же методу POST с TModel и IEnumerable <TModel>в ASP. NET Core - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть контроллер в. Net Core 2.2 Web API.

Существует метод POST, который отвечает за создание объекта. В настоящее время необходимо добавить другой метод POST, чтобы иметь возможность создавать множество. Вот пример кода, который я имею (никакая другая маршрутизация не используется):

[Route("api/[controller]")]
public class SampleController: BaseController
{
    [HttpPost]
    public Task<IActionResult> Create([FromBody] SampleModel model) {...}

    [HttpPost]
    public Task<IActionResult> CreateMany([FromBody] IEnumerable<SampleModel> models) {...}
}

Насколько сообщение об исключении говорит, что эти два - неоднозначные маршруты. Но для меня это кажется не совсем ясным. На самом деле аргументы действий бывают разных типов. Может быть, я что-то упускаю или это естественное ограничение?

1 Ответ

1 голос
/ 06 апреля 2020

В HTTP нет «действий» и «аргументов».

Когда ваше приложение получает запрос POST к api / Sample, инфраструктура приложения должна куда-то отправлять запрос. Create и CreateMany обслуживают один и тот же маршрут, поэтому невозможно выбрать один из них.

Вы можете либо изменить маршрут для одного из этих действий, например, используя HttpPost("CreateMany")], либо удалить первое действие, так как это лишнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...