Próbuję napisać „standardową” biznesową stronę internetową. Pod pojęciem „standard” rozumiem, że ta strona obsługuje zwykły HTML5, CSS i JavaScript dla frontonu, back-endu (do przetwarzania rzeczy) i uruchamia MySQL dla bazy danych. Jest to podstawowa strona CRUD: front-up robi po prostu wszystko, co ma baza danych; backend zapisuje w bazie danych cokolwiek użytkownik wejdzie i wykonuje pewne przetwarzanie. Podobnie jak większość witryn tam.
Tworząc moje repozytoria Github, aby rozpocząć kodowanie, zdałem sobie sprawę, że nie rozumiem różnicy między zapleczem a interfejsem API . Innym sposobem sformułowania mojego pytania jest: gdzie API pojawia się na tym obrazie?
Wymienię więcej szczegółów, a następnie pytania, które mam - mam nadzieję, że dzięki temu lepiej rozumiecie moje pytanie, ponieważ jestem tak zdezorientowany, że nie znam konkretnego pytania.
Kilka dodatkowych szczegółów:
- Chciałbym wypróbować wzór Model-Widok-Kontroler. Nie wiem, czy to zmieni pytanie / odpowiedź.
- Interfejs API będzie RESTful
- Chciałbym, aby mój back-end używał własnego API zamiast pozwalać back-endowi na oszukiwanie i wywoływanie specjalnych zapytań. Myślę, że ten styl jest bardziej spójny.
Moje pytania:
- Czy front-end wywołuje back-end, który wywołuje API? A może front-end po prostu wywołuje API zamiast wywoływać back-end?
- Czy zaplecze po prostu wykonuje interfejs API, a interfejs API zwraca kontrolę do zaplecza (gdzie zaplecze działa jako ostateczny kontroler, delegując zadania)?
Zachęcamy do długich i szczegółowych odpowiedzi wyjaśniających rolę interfejsu API wraz z interfejsem użytkownika. Jeśli odpowiedź zależy od modelu programowania (modele inne niż wzorzec Model-View-Controller), opisz te inne sposoby myślenia o interfejsie API. Dzięki. Jestem bardzo zmieszany.
Naszkicujmy „typową” architekturę strony internetowej, zarówno z „front-endem”, jak i „back-endem”. A ponieważ jest to strona internetowa, będziemy również jawnie mieć „klienta”. (Ponieważ w przeglądarce JavaScript nie ma możliwości bezpośredniego wywołania MySQL na serwerze).
Dla jasności używamy następujących terminów:
W przypadku prawidłowo zaprojektowanego programu każdy z tych komponentów ma prywatny interfejs API do komunikacji z innymi. „Front-end” kod PHP nie wydaje
SELECT
bezpośrednio dowolnych instrukcji SQL , ale raczej wywołuje procedury składowane, wstępnie autoryzowany SQL, a nawet odrębne wywołania PHP do zupełnie innej instancji PHP działającej na serwerze zaplecza . Te procedury składowane lub różne połączenia HTTP same w sobie są interfejsem API.Definicja nie zmienia się, nawet jeśli pozwolimy na pewną nieczystość naszego projektu. Jeśli Twój
PHP
plik zapisuje i wysyła ciąg SQL bezpośrednio do MySQL, TO JEST WCIĄŻ API , aczkolwiek bardzo nietypowy, którego powtórzenie jest mało prawdopodobne.Zauważ, że całkowicie możliwe jest, aby twój front-php był ściśle synchroniczny, bez żadnego voodoo AJAX. Jeśli wywołasz te same zewnętrzne funkcje PHP we wspomnianym pliku synchronicznym, możesz uznać, że używają one tego samego interfejsu API co wersja po stronie klienta, chociaż użycie tutaj terminu „API” może nie dać żadnej prawdziwej przejrzystości.
W końcu API jako interfejs programowania aplikacji i tak naprawdę odnosi się do każdego programu, który wywołuje poza własnym procesem. Jeśli piszesz projekt, który ma zarówno front-end, jak i back-end, mogą to być AJAX / PHP / MySQL jak wyżej lub MS Access / SQL Server, warto sprecyzować, w jaki sposób będziesz się nawiązywał, jeśli nie z innego powodu, niż po to, aby ułatwić wiedzieć, gdzie szukać, gdy coś się zepsuje.
(Temat publicznego API jest czymś zupełnie innym. W naszym powyższym przykładzie tylko adres URL wyświetlany w kliencie jest „publicznym API”. Cała reszta jest w istocie „prywatna”. dowolnego kodu, nad którym nie masz kontroli, aby wywołać wewnętrzny interfejs API, albo wprost zaprzeczasz takim wynikom, albo zastrzegasz sobie do tego prawo w przyszłości.
źródło
interfejs API obsługuje żądania HTTP, takie jak GET, POST, FETCH, DELETE ..., których można używać w zależności od dostępu do tokena w celu pobierania danych w określonym formacie, takim jak json, xml itp.
Te „dane” można wykorzystać we własnej aplikacji w celu uzyskania interfejsu API (Application Programming Interface), który jest publicznie dostępną usługą internetową do gromadzenia danych, które mogą być interesujące dla niektórych odbiorców.
Te dane mogą zwrócić zestaw danych oznaczających, że nie powiodło się, lub pobrać dane z serwera API
Interfejs API ma być zapleczem, dlatego można go używać w dowolnym środowisku frontonu. Oznacza to, że można go używać w aplikacji internetowej, Android, iOS ... obsługującej żądania https
źródło