Я бы предложил использовать модель, но модель, в которой все параметры могут быть обнуляемыми, и использовать атрибут RequiredAttribute для фактических требуемых параметров. Это позволит вашему методу принимать недопустимые запросы - с отсутствующими или дополнительными данными - но иметь действительные данные, привязанные к модели. Для недопустимых данных можно указать возврат ошибок вместо предполагаемых значений по умолчанию для ненулевых свойств. Использование архитектуры проверки привязки модели обеспечивает удобный способ убедиться, что запрос является законным. Вам решать, как вы хотите обрабатывать «лишние» данные, предоставленные запросом - я бы сказал, игнорировать их.