私の質問は、REST APIを集約またはグループ化するベストプラクティスについてです。多くの異なるベンダー、データソースなどがあるシナリオがあり、REST APIをグループ化することは、システムを保守可能に保つために非常に意味があると思います。
他のシステムで同じエンティティを作成するために、他の多くの(類似した)API呼び出しをトリガーする単一のAPI呼び出しがある多くのシナリオがあります。たとえば、エンティティ "user"の例:
- フロントエンドがREST APIを呼び出す:PUT ... / user
- 私が想定しているのは、上記のAPIをリッスンするコードが複数のREST PUT呼び出しを行って、ベンダーA /ユーザー、ベンダーB /ユーザー、ベンダーC /ユーザー、内部システムA /ユーザー、内部システムB /ユーザーなどを呼び出すことです。
このような:
+-------------------+
+--------+ PUT +-----------+ CALL | Vendor A API |
| | +-------> | user +--------> | |
| | | +-----------+ +-------------------+
| | |
| Front | PUT +--------++ PUT +-----------+ INSERT +-------------------+
| End +------> | user +------> | user +--------> | Internal System |
| | +--------++ +-----------+ +-------------------+
| | |
| | | +-----------+ CALL +-------------------+
| | +-------> | user +--------> | Vendor B API |
+--------+ PUT +-----------+ | |
+-------------------+
+ +
+---------------------------------+
Internal REST APIs
サンプルエンティティは「ユーザー」である必要はありません。ベンダーAPIに対応するエンティティが多数あることに注意してください。
このシナリオのベンダーは、さまざまな機能を提供しています。ただし、同じ機能を提供するベンダーが複数存在する場合があります(ユーザーは、使用したいベンダーを選択します)。簡単にするために、例の機能が
- 調達、
- 人事、
- 管理、
- 支払い。
このようなシナリオでREST APIをグループ化してネストするためのベストプラクティスは何ですか?それらをベンダーごとにグループ化するのは良い考えですか、それとも機能ごとまたは事業体ごとにグループ化する必要がありますか?URLはどのように見えますか?