Это не возможно и не желательно.В основном ядром REST является URI, который уникальным образом представляет конкретный ресурс.Если у вас есть URI, такой как POST /todo
, то тело сообщения должно быть «todo», и оно должно создавать новое «todo» на основе этого.Здесь это TodoItem
, то есть все , которые должны быть когда-либо опубликованы.
REST в стороне, это просто не будет работать.Когда ваше действие активировано, связыватель модели пытается связать тело сообщения с параметрами, которые принимает действие.По сути, он просто сообщает о том, какой бы тип параметра не был, а затем пытается найти что-то из тела сообщения, чтобы связать его с различными свойствами этого типа.Это намеренно упрощенное описание того, что происходит;важная часть заключается в том, что тип параметра сообщает, как связано тело сообщения.Если вы привязываетесь к object
(у которого нет членов) или даже к базовому типу, то единственными элементами тела сообщения, которые будут связаны, являются те, которые присутствуют в этом типе, а не производные типы.Все, что не может быть связано, отбрасывается.
Длинным и коротким, вам нужен уникальный маршрут для каждого типа вещей, с которыми вы работаете.Изнутри вы можете делиться или иным образом повторно использовать код, выделяя общие функции в частные методы, используя наследование и т. Д., Но вам необходимо отдельное действие и маршрут для обработки каждого случая.