Существует контроллер WebAPI v1 со следующим набором методов:
public class MailMessagesController : ApiController
{
[HttpPost]
[ActionName("Attachments")]
public HttpResponseMessage Attachments([FromUri] int id) {...}
[HttpPost]
public HttpResponseMessage Post() {...}
}
И соответствующая маршрутизация (второй маршрут используется также для пары других контроллеров):
routes.MapHttpRoute(
name: "mailMessages",
routeTemplate: "v1/mailMessages/{id}/{*action}",
defaults: new { controller = "mailMessages", action = "" }
);
routes.MapHttpRoute(
name: "Widget",
routeTemplate: "v1/widgets/{controller}"
);
Итак, вы видите, что основная идея выше - отправлять новые сообщения с POST
и публиковать новые вложения (также с POST
) в существующее почтовое сообщение.
Проблема возникает, когда вы пытаетесь связать Swagger / Swashbuckle с вышеуказанной настройкой, в основном она жалуется (выдает ошибки), что
Несколько операций с путем 'v1 / widgets / mailMessages' и методом
'POST'
И это вполне понятно, поскольку он рассматривает Attachments
-метод как еще один POST
.
Какой будет подходящая маршрутизация для игнорирования / удаления POST
mailMesage с идентификатором, , когда действие не указано ?
(я знаю об уловке с ResolveConflictingActions
в Swashbuckle, но я бы предпочел создать правильную маршрутизацию, чем скрывать несоответствия с помощью "swagging".)