コントローラをスキーマとアプリケーション処理を繋ぐアダプターとして捉える
レヤードアーキテクチャではどちらかと言えば、ビジネスロジックやアプリケーション処理の方が主導的でプレゼンテーションはそれを適用するものとされているような雰囲気がある。
APIスキーマよりはビジネスロジックやアプリケーション処理の方が変更される機会が多いのが実感だ。またI/OになっているAPIスキーマの変更は容易ではない。そうすると、変わりやすく不安定なビジネスロジックやアプリケーション処理を変わりにくく安定するプレゼンテーションが依存していることになるのではないか。
Spring (JavaやKotlin) の実装なら、コントローラをアダプターとして捉えたらどうか。リクエストボディやレスポンスボディをマッピングするデータ型は契約になっていて、アプリケーションサービスに繋ぐのがコントローラの役割りとする。これなら依存する方向の具合の悪さも役割りとして捉えられる。