Executando verificação de segurança...
1

Comunicação de APIs de Terceiros

Olá! Me chamo Erick, e estou desenvolvendo um website em Symfony (PHP) para uma empresa de energia solar da região. O sistema vai ser usado pelos clientes. Eles poderão ver toda a sua geração, economia, gráficos, etc.

Eu já integrei o sistema com uma API de um inversor para resgatar os dados de geração de cada cliente. Porém, agora, precisamos integrar com mais APIs.

Cada API precisa de dados diferentes para acessar a geração de um cliente. Enquanto uma precisa do nome do usuário, outra vai pedir o ID, outra vai pedir o email e um ID, etc. Ou seja, para cada API, dados diferentes precisarão ser servidos.

E a minha pergunta é: Como modelar esse tipo de personalização? Estou falando do diagrama de classes. Estou pensando em várias ideias diferentes, porém elas parecem muito complexas, ou muito "feias".

1

Particularmente, gerenciaria isso com uma interface:

interface ExternalInfoInterface
{
    public function call(): void;
    public function response(): array;
}
   
readonly class ApiX implements ExternalInfoInterface
{
    private $response; 
    
    public function call(): void
    {
        $this->response = Http::get('link');
        // não esqueça de tratar os erros
    }
    
    public function response(): array
    {
        return $this->response; 
    }
}

readonly class ApiY implements ExternalInfoInterface
{ 
    //mesma coisa 
}

readonly class ApiA implements ExternalInfoInterface
{ 
    //mesma coisa 
}

No exemplo eu separei a call() da response() por puro costume de separar bem separado as responsabilidade dos métodos, faça como achar melhor para você. Gosto assim.

Prefiro trabalhar orientado a interfaces ao invez de herança (explicação melhor aqui).

1