когда пользователь переходит по такой сформированной ссылке?
Какова задача бэкенда, а какова фронта?
Мне chatgpt отвечает, что в таком случае, обычно для каждого slug'а формируются отдельные html странички, которые потом отдаются
Это правда? Насколько оптимален такой подход? Присутствуют ли какие-то более оптимальные (допустим без формирования статики на каждый чих) альтернативы?
Обычно ничего там не сохраняется. По слагу определяется на какой товар запрос. Далее из базы считываются данные товара и: 1) Либо формируется динамический HTML и возвращается в браузер. 2) Либо формируется JSON с данными товара и возвращается по API, где эти данные рендерит фронт-приложение.
Понял, спасибо! Интересует второй вариант Допустим, nginx отдаёт статику, которая потом наполняться с помощью API. А как более детально это происходит? Вроде бы простой сценарий, но в голове общая картинка не складывается
Не очень понимаю что имеете ввиду. Какую статику nginx отдаёт и причем тут он.
Не при чём) Просто хочется чётко разделить задачи фронта и бэкенда в этой ситуации (скорее всего, меня сбивают с толку короткие ссылки с редиректом, но это другое) Насколько я понял, шаги следующие: 1) При переходе по ссылке веб-сервер отдаёт html 2) На фронте извлекают slug из адреса, а далее просят api вернуть товар по этому slug
Я не очень понял про первый шаг.
Опишите вашу задачу более конкретно. Мы вообще об одном говорим?
Допустим, у нас есть веб-сервер, занимающийся раздачей html файлов (этим ведь может nginx заниматься?) Что происходит при переходе по короткой ссылке на товар?
Если вы пишите на Го приложение, то причем тут nginx? Максимум что он может - это раздавать статику. Картинки, css. HTML будет генерироваться беком.
Мне почему-то всегда казалось, что одной из задач nginx является раздача html
загружается фронтенд, который шлёт запрос на апи, чтобы получить данные оп товару --- либо этот запрос сразу на бекенд который возвращает сразу заполненную html страницу --- в большинстве приложений первый вариант
"Мне chatgpt отвечает" - авторитетно (нет) По slug на бэке из базы данных извлекается запись (с нужными столбцами из одной таблицы или нескольких), после чего рендерится шаблон страницы и отдаётся обратно. Либо же формируется JSON и отдаётся обратно, если речь про API какое-то
nginx (или друга программа для этого) отдаёт файлик с сервера
Мне немного выше сказали, что nginx этим не занимается
вероятно, выше не так поняли ваш вопрос
https://t.me/gogolang/899899
Так мы говорили про HMTL страницы, а не каркаса фронтенда. Кроме того, Го-вебсервер может вернуть это по основному роуту приложения. Из своих шаблонов.
Распространенное решение в nginx на слеш / отдается билд фронтенд приложения, оно кешируется в браузере
ну так-то nginx не нужен, если вам просто статику раздать нужно, и эта статика - js в основном, который хорошо кешируется
в общем браузер шлёт запрос - он попадает на сервер - где в ответ получает фронтенл html страницу и рендерит её после рендера запускаются скрипты в которых идут запросы на сервер(бекенд, api) который отдаёт уже конкретные данные после эти данные фронтенд (html страница) с помощью js вставляет в html блоки эти данные это всё грубо говоря
Угу. И когда мы переходим по "слагу", то есть короткой ссылке, какова задача фронта, а какова бэка в этом сценарии? (изначальный вопрос, с которым я пришёл 🙃) Для наполнения страницы, фронт берёт из адреса slug, а api возвращает товар по slug'у, правильно понимаю?
бек - возвращает данные в формате json фронте - эти данные показывает
Обсуждают сегодня