Estou tentando escrever um site comercial "padrão". Por "padrão", quero dizer que este site executa o HTML5, CSS e Javascript usual para o front-end, um back-end (para processar coisas) e executa o MySQL para o banco de dados. É um site básico de CRUD: o front-end apenas faz o que quer que o banco de dados tenha reservado; o back-end grava no banco de dados o que o usuário digita e faz algum processamento. Assim como a maioria dos sites por aí.
Ao criar meus repositórios do Github para começar a codificar, percebi que não entendo a distinção entre o front-end back-end e a API . Outra maneira de formular minha pergunta é: de onde a API entra nessa imagem?
Vou listar mais alguns detalhes e depois as perguntas que tenho - espero que isso dê a vocês uma idéia melhor de qual é minha pergunta real, porque estou tão confusa que não sei a pergunta específica a ser feita.
Mais alguns detalhes:
- Gostaria de experimentar o padrão Model-View-Controller. Não sei se isso muda a pergunta / resposta.
- A API será RESTful
- Gostaria que meu back-end usasse minha própria API em vez de permitir que o back-end trapaceie e chame consultas especiais. Eu acho que esse estilo é mais consistente.
Minhas perguntas:
- O front-end chama o back-end que chama a API? Ou o front-end chama a API em vez de chamar o back-end?
- O back-end apenas executa uma API e a API retorna o controle ao back-end (onde o back-end atua como o controlador final, delegando tarefas)?
São encorajadas respostas longas e detalhadas que explicam o papel da API ao lado do back-end do front-end. Se a resposta depender do modelo de programação (modelos diferentes do padrão Model-View-Controller), descreva essas outras formas de pensar na API. Obrigado. Estou muito confusa.
Vamos esboçar a arquitetura de um site "típico", com um "front-end" e um "back-end". E como é um site, também explicitamente teremos um "cliente". (Como não há como o JavaScript em um navegador chamar o MySQL diretamente em um servidor.)
Para maior clareza, os termos que estamos usando são:
Para um programa projetado adequadamente, cada um desses componentes possui uma API privada para se comunicar com os outros. O código PHP "front-end" não emite
SELECT
instruções SQL arbitrárias diretamente, mas chama procedimentos armazenados, SQL pré-autorizado ou mesmo chamadas PHP distintas para uma instância completamente diferente do PHP que é executada no servidor back-end . Esses procedimentos armazenados ou chamadas HTTP distintas são elas próprias uma API.A definição não muda, mesmo se permitirmos alguma impureza em nosso design. Se o seu
PHP
arquivo grava e envia uma string SQL diretamente para o MySQL, ainda é uma API , embora seja muito incomum que é improvável que você repita.Observe que é perfeitamente possível que o seu front-end php seja estritamente síncrono, sem nenhum vodu AJAX. Se você chamar as mesmas funções PHP externas no referido arquivo síncrono, poderá considerá-las como usando a mesma API que a versão do lado do cliente, embora o uso do termo "API" aqui possa não fornecer nenhuma clareza real.
Uma API como uma interface de programação de aplicativos , afinal, e realmente se refere a qualquer momento que um programa chama fora de seu próprio processo. Se você estiver escrevendo um projeto que possui um front-end e um back-end, sejam os AJAX / PHP / MySQL como acima ou MS Access / SQL Server, vale a pena especificar explicitamente como você se chamará, por nenhuma outra razão, além de facilitar saber onde procurar quando algo quebra.
(E o tópico da API pública é outra coisa completamente diferente. No nosso exemplo acima, apenas a URL exibida no cliente é uma "API pública". Todo o resto é, em essência, "privado". Assim, você não espera qualquer código fora do seu controle para chamar sua API interna e você nega esses resultados ou se reserva o direito de fazê-lo no futuro.
fonte
uma API lida com solicitações http como GET, POST, FETCH, DELETE ... que podem ser usadas dependendo do seu acesso ao token para recuperar dados em um formato específico, como json, xml, etc.
Esses "dados" podem ser usados em seu próprio aplicativo para obter API (Application Programming Interface), que é um serviço da web acessível ao público para reunir dados que podem ser interessantes para algumas audiências.
Esses dados podem retornar um conjunto de dados que representam a falha ou recuperar dados do servidor da API
A API deve ser de back-end para que possa ser usada em qualquer ambiente de front-end. Isso significa que pode ser usado em um aplicativo da web, android, ios ... que pode lidar com solicitações https
fonte