Content-Type — это про входные данные (параметры экшена). Есть из коробки через механизм model-binding'a/input formatters.
Про выходные — это Accept header. Тоже есть из коробки через механизм content negotiation/output formatters.
Идея такая: один ресурс — один URI, разные представления.
Логика обработки (то, что делается с ресурсом в экшене) не меняется. Меняется только представление входных/выходных данных.
А раз логика одна и та же, то и смысла дублировать ее в разных экшенах нет.