質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

SPAにおけるAPIの設計はフロントの画面に寄り添うべきか?

受付中

回答 0

投稿

  • 評価
  • クリップ 5
  • VIEW 2,637

score 11

 前提

こんにちは。私は業務にて、RailsとVueを用いたSPAの開発に従事しており、主にAPIの設計、実装を担当しております。RailsによるAPIの概要は以下の通りです。

  • フロントエンド及びネイティブアプリから呼び出され、リクエスト、レスポンスともにJSONを用いる
  • APIの一般公開や外部への提供は一切なく、内部での利用に限定している
  • RESTベースで設計、実装しているが、後述の理由から、RESTfulとはとても言えない

 困りごと

前述の通り、APIはRESTベースになっており、初めの頃はなるべくシンプルなCRUDを提供しようと、キレイなRESTFulを目指していました。

しかし、開発が進むにつれ、フロントエンド側のエンジニアから、「この画面ではこういうUIがある都合、APIではこのデータもまとめて返却してほしい」「この一連の操作で一貫性を保たないといけないから、API呼び出し1回で済むようにしてほしい」などのように、APIを呼び出す画面ごとの機能に特化した仕組みをAPIが単一エンドポイントで提供することを希望することが多くなりました。

確かにフロント側にとってみれば、その画面にとって必要な機能を、1回のAPI呼び出しで全て解決できれば実装も楽になりますし、リクエスト回数による通信不可も削減できると思います。

しかし、あまりにAPIがフロント側に寄り添いすぎると、各エンドポイントの責務が曖昧になったり、どのモデルにも属さない、汎用的な機能が出来上がったり、本来単純な機能提供をしていたAPIを複数箇所で再利用することができなくなったりと、保守の観点からあまり望ましくないのではとも考えています。

こういった問題に絶対の正解はないと思いますし、それこそプロダクトの特性や、チームの状態などによって良し悪しが変わることも承知の上です。なので参考までにはなりますが、皆様はそういった経験がある場合、どのように折り合いをつけたのでしょうか。経験はなくとも、APIの設計はこうであるべきなどありましたら、是非ともご意見をお聞かせください。

よろしくおねがいします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る