Minha pergunta é sobre as melhores práticas de agregação ou agrupamento de APIs REST. Eu tenho um cenário em que existem muitos fornecedores, fontes de dados etc. e acho que agrupar APIs REST faria muito sentido manter o sistema sustentável.
Eu tenho muitos cenários em que haverá uma única chamada de API acionando muitas outras chamadas de API (semelhantes) para criar a mesma entidade em outro sistema . Por exemplo, para uma entidade de exemplo "usuário" :
- API REST de chamadas de front-end: PUT ... / user
- O que eu imagino é que o código que escuta na API acima fará várias chamadas REST PUT, digamos vendorA / user, vendorB / user, vendorC / user, internalSystemA / user, internalSystemB / user, etc.
Como isso:
+-------------------+
+--------+ PUT +-----------+ CALL | Vendor A API |
| | +-------> | user +--------> | |
| | | +-----------+ +-------------------+
| | |
| Front | PUT +--------++ PUT +-----------+ INSERT +-------------------+
| End +------> | user +------> | user +--------> | Internal System |
| | +--------++ +-----------+ +-------------------+
| | |
| | | +-----------+ CALL +-------------------+
| | +-------> | user +--------> | Vendor B API |
+--------+ PUT +-----------+ | |
+-------------------+
+ +
+---------------------------------+
Internal REST APIs
Observe que a entidade de exemplo não precisa ser "usuário", há muitas entidades que terão uma contrapartida nas APIs do fornecedor.
Os fornecedores neste cenário fornecem funcionalidade diferente. Mas pode haver vários fornecedores que fornecem a mesma funcionalidade (e o usuário escolhe o fornecedor que deseja usar). Para simplificar, digamos que as funcionalidades de exemplo são
- Compras,
- Recursos humanos,
- Gestão,
- Forma de pagamento.
Qual é a melhor prática para agrupar e aninhar APIs REST nesse cenário? É uma boa ideia agrupá-los por fornecedor ou eles devem ser agrupados em função ou por entidade comercial? Como seria o URL?