Как заставить API выдавать коды 406 или 415 во время согласования контента

При создании RESTful API желательно выдавать коды возврата 406 (неприемлемо) и 415 (неподдерживаемый тип мультимедиа) при согласовании содержимого.

Что мне не ясно, так это то, как именно вернуть эти коды в приложение WebAPI2, использующее маршрутизацию атрибутов.

Я видел примеры того, как использовать ActionMethodSelectorAttribute и RouteFactoryAttribute для создания настраиваемых селекторов маршрутов, но когда маршрут не может быть найден из-за несоответствия Accept или Content-Type, автоматическим ответом является ошибка 404 Not found, которая не полностью объясняет проблема.

Что я хотел бы сделать, так это зафиксировать, ПОЧЕМУ маршрут не может быть найден, и, если это связано с ошибкой согласования типа контента, вернуть соответствующий код ответа 406 или 415.

Есть ли где-нибудь пример, показывающий, как это сделать?


person mcwrath    schedule 12.04.2016    source источник
comment
Хорошо, мой вопрос не ясен... Я пытаюсь реализовать выбор маршрута на основе версии, указанной в типе принятия в заголовке запроса, как описано здесь: stackoverflow.com/questions/25299889/ У меня проблема в том, что когда маршрут не выбран из-за несоответствия версии, я хотел бы иметь возможность вернуть 406.   -  person mcwrath    schedule 19.04.2016