Rest где используется? Зачем?

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Rest где используется? Зачем?

Сообщение miltorg »

Rest где используется? Зачем?

По идее это запрос к Базе данных. Но зачем изобретать велосипед?
А может это попытка унифицировать API ?

Спасибо.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение ElisDN »

Принципы REST достаточно общие для клиент-серверного взаимодействия вроде HTTP.

А так да, частично их упоминают при организации API.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Rest где используется? Зачем?

Сообщение maleks »

miltorg писал(а): 2020.03.02, 22:49 Rest где используется? Зачем?

По идее это запрос к Базе данных. Но зачем изобретать велосипед?
А сейчас такая тенденция, куда не глянь, приложения пишутся с использованием "реактивного" JavaScript.
Например посмотрите чуток примеры с Vue, они там на js делают то что обычно делалось на сервере, на php.
Потому что модель у них там в ихней разновидности MVC - это js модель.
Но данные надо все равно откуда то получать/складывать и организуют общение с сервером посредством например rest.
Yii2 universal module sceleton - for basic and advanced templates
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

maleks писал(а): 2020.03.03, 11:10
А сейчас такая тенденция, куда не глянь, приложения пишутся с использованием "реактивного" JavaScript.
Например посмотрите чуток примеры с Vue, они там на js делают то что обычно делалось на сервере, на php.
Потому что модель у них там в ихней разновидности MVC - это js модель.
Но данные надо все равно откуда то получать/складывать и организуют общение с сервером посредством например rest.
А дайте пожалуйста ссылки чтоб не перелопачивать тонны мусора.
С этим Rest - пишут тонны хрени на один простейший запрос.
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

У меня в голове не укладывалось, что это всё для того, чтоб получить 1 строку с базы.
Посмотрел код rest-Сервера - Да! Для получения 1 строки с базы.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Rest где используется? Зачем?

Сообщение maleks »

miltorg писал(а): 2020.03.03, 22:04
maleks писал(а): 2020.03.03, 11:10
А сейчас такая тенденция, куда не глянь, приложения пишутся с использованием "реактивного" JavaScript.
Например посмотрите чуток примеры с Vue, они там на js делают то что обычно делалось на сервере, на php.
Потому что модель у них там в ихней разновидности MVC - это js модель.
Но данные надо все равно откуда то получать/складывать и организуют общение с сервером посредством например rest.
А дайте пожалуйста ссылки чтоб не перелопачивать тонны мусора.
Ну вот например тут , начиная с "Таким образом, каждому элементу массива будет соответствовать свой элемент li" , показывают как js массив связан с представлением на странице(в html).
JS программисту достаточно сменить значения этого массива, внешний вид изменится, а данные если ему нужны для этого из базы, он аяксом запросит их из апи
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение ElisDN »

miltorg писал(а): 2020.03.03, 22:07 У меня в голове не укладывалось, что это всё для того, чтоб получить 1 строку с базы.
Обычный классический сайт просто возвращает готовую HTML-страницу:

Код: Выделить всё

GET /blog/26

<html>
<head>...</head>
<body>
<article>
    <h1>Post 1</h1>
    <aside>
        <span>Дата: 25 ноября 2019</span>
        <span>Автор: <a href="/users/vasya">Вася</a></span>
    </aside>
    <p>Content</p>
</article>
</body>
</html>
Но мобильному приложению или JS-фронтенду с ней работать не очень удобно, так как придётся парсить контент.

Вместо этого для них можно сделать отдельные API-адреса для получения того же самого, но в формате JSON:

Код: Выделить всё

GET /api/blog/posts/26

{
    "id": 26,
    "title": "Post 1",
    "date": "2019.11.25",
    "author": {
        "username": "vasya",
        "name": "Вася",
    },
    "content": "Content"
}
И теперь любое IOS/Android приложение будет ходить по этим техническим адресам и выводить полученные данные у себя.

То еcть по сути да, API (Application Programming Interface) делают для запросов той же информации из БД, но для возврата её в более удобном JSON или XML формате для приложений вместо возврата в HTML-виде для браузера.

А если всю вёрстку вынести в отдельный JS-фронтенд на React/Vue/Angular, то на сервере можно оставить только API.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение ElisDN »

Но не путайте аббревиатуры API и REST.

API можно сделать какое угодно и в любом формате.

А REST - это всего лишь список рекомендаций, по которым можно строить любое клиент-серверное взаимодействие, чтобы его можно было кешировать, проксировать, балансировать на несколько серверов и т.п.
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

ElisDN писал(а): 2020.03.04, 12:21
Обычный классический сайт просто возвращает готовую HTML-страницу:

Обычный классический сайт может вернуть что угодно. Вообще - что угодно. Только он должен быть на php.
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

ElisDN писал(а): 2020.03.04, 12:21

То еcть по сути да, API (Application Programming Interface) делают для запросов той же информации из БД, но для возврата её в более удобном JSON или XML формате для приложений вместо возврата в HTML-виде для браузера.

А REST - это всего лишь список рекомендаций,
Что я и писал в первом сообщении - Попытка унификации API
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

Кстати. rest-Сервер на Друпале - из коробки.
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

maleks писал(а): 2020.03.04, 08:02
miltorg писал(а): 2020.03.03, 22:04
maleks писал(а): 2020.03.03, 11:10
А сейчас такая тенденция, куда не глянь, приложения пишутся с использованием "реактивного" JavaScript.
Например посмотрите чуток примеры с Vue, они там на js делают то что обычно делалось на сервере, на php.
Потому что модель у них там в ихней разновидности MVC - это js модель.
Но данные надо все равно откуда то получать/складывать и организуют общение с сервером посредством например rest.
А дайте пожалуйста ссылки чтоб не перелопачивать тонны мусора.
Ну вот например тут , начиная с "Таким образом, каждому элементу массива будет соответствовать свой элемент li" , показывают как js массив связан с представлением на странице(в html).
JS программисту достаточно сменить значения этого массива, внешний вид изменится, а данные если ему нужны для этого из базы, он аяксом запросит их из апи
Спасибо! Это как раз то что нужно. Спасибо.
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

maleks писал(а): 2020.03.04, 08:02 Ну вот например тут , начиная с "Таким образом, каждому элементу массива будет соответствовать свой элемент li" , показывают как js массив связан с представлением на странице(в html).
JS программисту достаточно сменить значения этого массива, внешний вид изменится, а данные если ему нужны для этого из базы, он аяксом запросит их из апи
Посмотрел.
???? Это что? Жалкая попытка сделать php на клиенте?
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

ElisDN писал(а): 2020.03.04, 12:21
И теперь любое IOS/Android приложение будет ходить по этим техническим адресам и выводить полученные данные у себя.
Вы не могли бы привести примеры этих приложений?
Возможно что в этом - весь Сыр-бор.

Возможно что я, со своим Дисктопом, и не ведаю о каком то массовом явлении на мобильниках
Спасибо.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Rest где используется? Зачем?

Сообщение maleks »

miltorg писал(а): 2020.03.04, 23:19 Кстати. rest-Сервер на Друпале - из коробки.
А в yii2 тоже ж то что вокруг AR моделей все из коробки.
miltorg писал(а): 2020.03.05, 00:36 Посмотрел.
???? Это что? Жалкая попытка сделать php на клиенте?
Я б не относился к этому несерьезно.
Уже постоянно встречается в требованиях и много где даже в yii, начинает использоваться.
По сути хотят чтобы функционал без перезагрузки страницы работал.
Для этого конечно и раньше были "pjax" или на jquery сам аякс пишешь, но фронтендерам видимо такое не нравилось.
Yii2 universal module sceleton - for basic and advanced templates
miltorg
Сообщения: 45
Зарегистрирован: 2019.08.13, 14:03
Откуда: Калининград
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение miltorg »

maleks писал(а): 2020.03.05, 08:04
По сути хотят чтобы функционал без перезагрузки страницы работал.
Для этого конечно и раньше были "pjax" или на jquery сам аякс пишешь, но фронтендерам видимо такое не нравилось.
Странно. Я думал что тенденция как раз в другую сторону - всё делаем в облаке.
Странно.
И спасибо вам. - Чувствуется что вы владеете темой
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение ElisDN »

miltorg писал(а): 2020.03.04, 23:12 Обычный классический сайт может вернуть что угодно. Вообще - что угодно. Только он должен быть на php.
Может вернуть что угодно, но браузер отрендерит только HTML-страницу. А сервер может быть на PHP/Ruby/Python/Java/C#/etc.
miltorg писал(а): 2020.03.05, 00:36 Жалкая попытка сделать php на клиенте?
Если сайт не интерактивный, а просто HTML-страница с текстом, то хватит одного PHP.

Если надо добавить что-то интерактивное вроде кнопки лайка, всплывания формы и отправки комментария без перезагрузки, то можно дописать показ формы и отправку Ajax-запросов маленьким кодом на jQuery или на голом JavaScript.

Если нужно всё целиком сделать интерактивным, то так получатся тонны jQuery-кода в перемешку с HTML, в которых программист в итоге заблудится. Чтобы такого не было для рендеринга и анимирования фронтенда интерактивных проектов используют отдельные полноценные JavaScript-фреймворки, а на сервере оставляют только API для ответов на их Ajax-запросы. Это сразу даёт бонус в том, что это же самое API теперь может использовать и своё мобильное приложение.
miltorg писал(а): 2020.03.05, 09:41 Странно. Я думал что тенденция как раз в другую сторону - всё делаем в облаке.
Тенденция в том, что сайты из простых статических страниц для чтения превращаются в интерактивные вещи, по сложности напоминающие десктопные приложения. Как Google Docs - это не просто страница на PHP, а полноценный браузерный MS Office на JavaScript с хранением документов на сервере. На одном PHP такое не сделаешь. Все админки, кабинеты хостингов, CRM и подобные проекты обрастают JavaScript-ом.

В итоге тенденция на разделение ответственностей. Хранение и вычисления данных делают любым языком на сервере в облаке, а интерактивный интерфейс ко всему этому строят на JavaScript в браузере. И передачу данных между ними делают в виде API.
miltorg писал(а): 2020.03.05, 00:59 Вы не могли бы привести примеры этих приложений?
Возможно что в этом - весь Сыр-бор.
Возможно что я, со своим Дисктопом, и не ведаю о каком то массовом явлении на мобильниках
Практически все мобильные приложения имеют регистрацию/вход и хранят данные на своём сервере, с которым общаются по сети. Те же приложения Facebook и Twitter дёргают API Graph и Twitter API. Почтовики, мобильные банки, мессенжеры и т.п. - все ходят в свои API.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Rest где используется? Зачем?

Сообщение maleks »

ElisDN писал(а): 2020.03.05, 11:04 Чтобы такого не было для рендеринга и анимирования фронтенда интерактивных проектов используют отдельные полноценные JavaScript-фреймворки, а на сервере оставляют только API для ответов на их Ajax-запросы.
А что насчет архитектурных моментов?

Вот это js приложение, будет оно полноценным приложением? со всеми слоями - бизнес логика, модели, контроллеры, ui, а с API работать как с внешним миром.

Или это все js приложение можно рассматривать как UI слой одного общего приложения?
ElisDN писал(а): 2020.03.05, 11:04 Тенденция в том, что сайты из простых статических страниц для чтения превращаются в интерактивные вещи, по сложности напоминающие десктопные приложения.
На одном PHP такое не сделаешь. Все админки, кабинеты хостингов, CRM и подобные проекты обрастают JavaScript-ом.
Всю эту сложность уровня десктопных приложений поддерживать кому то придется...
Уже сейчас заметно, часть специфичной работы на бэкенде, куча работы на фронте, все каждое на своем фреймворке.
Уже так чтобы один человечек, на экспертном уровне поддерживал такой проект, совсем не факт.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Rest где используется? Зачем?

Сообщение ElisDN »

maleks писал(а): 2020.03.05, 14:10 Вот это js приложение, будет оно полноценным приложением? со всеми слоями - бизнес логика, модели, контроллеры, ui, а с API работать как с внешним миром. Или это все js приложение можно рассматривать как UI слой одного общего приложения?
Обычно это просто UI с маршрутизацией и виджетами.
maleks писал(а): 2020.03.05, 14:10 Всю эту сложность уровня десктопных приложений поддерживать кому то придется...
Уже сейчас заметно, часть специфичной работы на бэкенде, куча работы на фронте, все каждое на своем фреймворке.
Уже так чтобы один человечек, на экспертном уровне поддерживал такой проект, совсем не факт.
Да, фронт стал сложным как бэк. Со своими технологиями и фреймворками. Простой программист-верстальщик уже всё экспертно не осилит. Теперь есть отдельные вакансии бэкендеров и фронтендеров.
Последний раз редактировалось ElisDN 2020.03.05, 15:19, всего редактировалось 5 раз.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Rest где используется? Зачем?

Сообщение skynin »

miltorg писал(а): 2020.03.02, 22:49 По идее это запрос к Базе данных. Но зачем изобретать велосипед?
В простых случаях. Бложик, "Новости нашего квартала"
В средней сложности системах схема хранения данных и модели на фронтенде быстро начинают отличаться. Бизнес суть та же, а вот наборы полей - побольше, или обрабатываются дополнительно при их выдаче.
В сложных проектах база данных может быть не одна, и не одного типа, и т.п. так что уже и REST надо расширять, или переходить на JSON-RPC, или посматривать в сторону GraphQL, подписки на CQRS каналы, и т.д.

А в простых да, шлем "упрощенные SQL запросы" с фронтенда, добавляем безопасности, да и все.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Ответить