Веб-дизайн

Тупой вопрос про бэкэнд и фронтэнд.

Мне никто никогда не пояснял эту, наверное, очевидность, и я не могу сложить фундаментальный пазл понимания: Допустим есть задача разработать сайт. В каком формате пишется бэк? рест апи (когда пересылаются джсоны) или когда пересылаются html странички? Знаю что есть и другие форматы, но давайте рассмотрим эти два. Любой ответ на этот вопрос вызывает у меня кучу вопросов. Если рест апи с джсонами - как фронтэнд взаимодействует с этими джсонами? Как html странички получают из них данные? Или это иначе работает??
Потом - если рест апи, каким образом реализована cookie-based авторизация, которая используется в большинстве сайтов?
Ок, допустим ответ второй (гоняются html странички), тогда как тестировать такое приложение? как его дробить на более мелкие микросервисы? Как...дофига вопросов короче. Я эти 2 способа достаточно хорошо понял по отдельности, научился делать и так, и так и знаю немало деталей (в бэк части), но то, как это работает в целом (с фронтом), как оно с ним взаимодействуют и когда применятся тот или иной способ - я не знаю, у меня жёсткая каша в голове.
Одни и те же вещи можно делать по-разному. В целом никто вас сильно не осудит, если для своих домашних проектов вы будете делать все по старинке. Сookie-based авторизация, и сервер, отдающий html.

Но для сложных сервисов все иначе. Решение делать REST API -- это же не дань моде. Это подход к решению задачи. Когда есть много клиентов и разумно делать для них одно API. REST API вы тоже можете технически авторизовать через cookie. Но принято делать это через токены.

Как тестировать? Есть разные виды тестов. Обычно API тестируется отдельно. Но можно тестировать и взаимодействие фронтенда с бекендом. Задача лишь сводится к тому, чтобы уметь писать тестируемый код.
Гахварбек Факирмамадов
Гахварбек Факирмамадов
171
Лучший ответ
Взаимодействие фронт-енда и бек-енда осуществляется по протоколу HTTP.

Протокол - это формат данных, передаваемых по сети.

С точки зрения разработчика, в браузерах есть XHR и Fetch для отправки HTTP-запросов
https://learn.javascript.ru/xmlhttprequest
https://learn.javascript.ru/fetch
А в любом сервере есть средства для их принятия.
В браузере все на HTTP-запросах. И странички, и JSON. Открываешь страничку в браузере - посылается GET HTTP-запрос, ответ в данном случае HTML.

Чтобы изучить тему конкретнее и нагляднее, можно поставить программу Fiddler для перехвата HTTP-трафика, включить в ней декодирование HTTPS и смотреть, как это устроено на реальных Web-сервисах, какие запросы отправляются и какие ответы, что в HTML, а что в JSON.

А чтобы на практике все это воспроизвести, можно просто поставить Node.js, сделать сервер на локалхосте и играться с ним в браузере.
Там все достаточно просто, полно гайдов в сети.
Сергей Чернышов После токс ответов хочется в ноги покланяться за разверный ответ)) Спасибо!
Вот этим и отличаются профессионалы от любителей. Любители не знают элементарных основ, но лезут в серьёзные проекты.
Митя Зубарев
Митя Зубарев
45 905
Сергей Чернышов я что, назвал себя профессионалом или полез в серьезный проект?
Влом читать пустопорожний бред.
Сергей Чернышов рус комьюнити токс, не раз убеждаюсь