Страница 1 из 2

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

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

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

Спасибо.

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

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

А так да, частично их упоминают при организации API.

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

Добавлено: 2020.03.03, 11:10
maleks
miltorg писал(а): 2020.03.02, 22:49 Rest где используется? Зачем?

По идее это запрос к Базе данных. Но зачем изобретать велосипед?
А сейчас такая тенденция, куда не глянь, приложения пишутся с использованием "реактивного" JavaScript.
Например посмотрите чуток примеры с Vue, они там на js делают то что обычно делалось на сервере, на php.
Потому что модель у них там в ихней разновидности MVC - это js модель.
Но данные надо все равно откуда то получать/складывать и организуют общение с сервером посредством например rest.

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

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

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

Добавлено: 2020.03.03, 22:07
miltorg
У меня в голове не укладывалось, что это всё для того, чтоб получить 1 строку с базы.
Посмотрел код rest-Сервера - Да! Для получения 1 строки с базы.

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

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

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

Добавлено: 2020.03.04, 12:21
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.

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

Добавлено: 2020.03.04, 13:02
ElisDN
Но не путайте аббревиатуры API и REST.

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

А REST - это всего лишь список рекомендаций, по которым можно строить любое клиент-серверное взаимодействие, чтобы его можно было кешировать, проксировать, балансировать на несколько серверов и т.п.

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

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

Обычный классический сайт может вернуть что угодно. Вообще - что угодно. Только он должен быть на php.

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

Добавлено: 2020.03.04, 23:17
miltorg
ElisDN писал(а): 2020.03.04, 12:21

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

А REST - это всего лишь список рекомендаций,
Что я и писал в первом сообщении - Попытка унификации API

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

Добавлено: 2020.03.04, 23:19
miltorg
Кстати. rest-Сервер на Друпале - из коробки.

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

Добавлено: 2020.03.04, 23:24
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 программисту достаточно сменить значения этого массива, внешний вид изменится, а данные если ему нужны для этого из базы, он аяксом запросит их из апи
Спасибо! Это как раз то что нужно. Спасибо.

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

Добавлено: 2020.03.05, 00:36
miltorg
maleks писал(а): 2020.03.04, 08:02 Ну вот например тут , начиная с "Таким образом, каждому элементу массива будет соответствовать свой элемент li" , показывают как js массив связан с представлением на странице(в html).
JS программисту достаточно сменить значения этого массива, внешний вид изменится, а данные если ему нужны для этого из базы, он аяксом запросит их из апи
Посмотрел.
???? Это что? Жалкая попытка сделать php на клиенте?

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

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

Возможно что я, со своим Дисктопом, и не ведаю о каком то массовом явлении на мобильниках
Спасибо.

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

Добавлено: 2020.03.05, 08:04
maleks
miltorg писал(а): 2020.03.04, 23:19 Кстати. rest-Сервер на Друпале - из коробки.
А в yii2 тоже ж то что вокруг AR моделей все из коробки.
miltorg писал(а): 2020.03.05, 00:36 Посмотрел.
???? Это что? Жалкая попытка сделать php на клиенте?
Я б не относился к этому несерьезно.
Уже постоянно встречается в требованиях и много где даже в yii, начинает использоваться.
По сути хотят чтобы функционал без перезагрузки страницы работал.
Для этого конечно и раньше были "pjax" или на jquery сам аякс пишешь, но фронтендерам видимо такое не нравилось.

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

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

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

Добавлено: 2020.03.05, 11:04
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.

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

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

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

Или это все js приложение можно рассматривать как UI слой одного общего приложения?
ElisDN писал(а): 2020.03.05, 11:04 Тенденция в том, что сайты из простых статических страниц для чтения превращаются в интерактивные вещи, по сложности напоминающие десктопные приложения.
На одном PHP такое не сделаешь. Все админки, кабинеты хостингов, CRM и подобные проекты обрастают JavaScript-ом.
Всю эту сложность уровня десктопных приложений поддерживать кому то придется...
Уже сейчас заметно, часть специфичной работы на бэкенде, куча работы на фронте, все каждое на своем фреймворке.
Уже так чтобы один человечек, на экспертном уровне поддерживал такой проект, совсем не факт.

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

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

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

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

А в простых да, шлем "упрощенные SQL запросы" с фронтенда, добавляем безопасности, да и все.