Javascript-форум (https://javascript.ru/forum/)
-   Мобильный JavaScript (https://javascript.ru/forum/mobile/)
-   -   php для мобильных? (https://javascript.ru/forum/mobile/79748-php-dlya-mobilnykh.html)

voraa 19.03.2020 17:16

Цитата:

Сообщение от miltorg (Сообщение 521510)
Ок. Вернёмся на землю.
На собеседовании мне задали вопрос:
Как получить на клиенте Рест запрос с удалённого сервера?
Я написал:
$json = file_get_contents('https://api.site.com/v1/profile');
$data = json_decode($json, true);
echo $data['name'];

Он сказал, что всё неверно и начал выдумывать что-то про безопасность.

php - хавает такие задачки на завтрак и по умолчанию.
В JS есть такое?

Есть. На ужин.

const response = await fetch('https://api.site.com/v1/profile')
const data = await response.json();
console.log(data);

voraa 19.03.2020 17:34

Цитата:

Сообщение от miltorg (Сообщение 521511)
2 задание. Узнать на клиенте положение выключателя (вкл/выкл) для неограниченного числа пользователей
php:

$mysqli = new mysqli("example.com", "user", "password", "database");

$rez = $mysqli->query("SELECT vk FROM test WHERE id = 1")
-> fetch_assoc();

print $rez['vk'];

А для JS?

Аналогично
const response = await fetch('example.com?id=1')
const data = await response.json();
console.log(data.vk);


И клиента не должно волновать как там сервер найдет этот выключатель. Будет там работать php, или Node, или просто cgi скрипт, написанный на С. Будет там база на мускуле, или на интербейсе, или просто в файле поищет...

Rise 19.03.2020 17:34

Цитата:

Сообщение от miltorg
-> fetch_assoc();
print $rez['vk'];

results[0].vk

miltorg 19.03.2020 17:55

Цитата:

Сообщение от voraa (Сообщение 521516)
Аналогично
const response = await fetch('example.com?id=1')
const data = await response.json();
console.log(data.vk);


И клиента не должно волновать как там сервер найдет этот выключатель. Будет там работать php, или Node, или просто cgi скрипт, написанный на С. Будет там база на мускуле, или на интербейсе, или просто в файле поищет...

Нет. Не верно. Точнее тут нет решения.
Тут просто запрос к серверу и попытка получить ответ.

voraa 19.03.2020 18:21

Цитата:

Сообщение от miltorg (Сообщение 521519)
Нет. Не верно. Точнее тут нет решения.
Тут просто запрос к серверу и попытка получить ответ.

Так и на php мы обращаемся к базе данных и пытаемся получить ответ.
База данных это не часть php. Это отдельная задача, часто отдельный сервер... Который может быть, а может не быть. Может работать, а может и не работать в данный момент.

miltorg 19.03.2020 18:24

Цитата:

Сообщение от voraa (Сообщение 521521)
Так и на php мы обращаемся к базе данных и пытаемся получить ответ.
База данных это не часть php. Это отдельная задача, часто отдельный сервер... Который может быть, а может не быть. Может работать, а может и не работать в данный момент.

Если всё работает - я получу ответ на задание. Он - не получит.
Вы правда это не понимаете?

voraa 19.03.2020 18:52

И я получу, если сервер работает и настроен на такие запросы
Php обращается к example.com, предполагая (зная), что там есть база данных, что эта база именно mysql, что в ней есть таблица и соответствующие поля.
А javascript обращается к example.com, предполагая (зная), что этот сервер может принять такой get запрос и в ответ пришлет нужный файл json.
Предположения javascript ничуть не хуже предположений php/

miltorg 19.03.2020 19:28

Цитата:

Сообщение от voraa (Сообщение 521523)
И я получу, если сервер работает и настроен на такие запросы
Php обращается к example.com, предполагая (зная), что там есть база данных, что эта база именно mysql, что в ней есть таблица и соответствующие поля.
А javascript обращается к example.com, предполагая (зная), что этот сервер может принять такой get запрос и в ответ пришлет нужный файл json.
Предположения javascript ничуть не хуже предположений php/

Нет. Почему?
Потому что на JS - это предположение
А PHP готовое решение.

-----------------------

В принципе, мне стала немножко понятней поведение некоторых. Это поведение основано на том, что Сервер вам что-то должен.
Но Сервер никому ничего не должен. Сервер нужно программировать.

SuperZen 19.03.2020 19:34

упала тень на плетень )

Nexus 19.03.2020 19:36

Цитата:

Сообщение от miltorg
Как получить на клиенте Рест запрос с удалённого сервера?

Запросы не получаются с удаленного сервера, а отправляются на него. С сервера Вы можете получить ответ на Ваш запрос.
"Rest-request" - это разновидность запроса такая?)

В этой статье, вроде бы, (прочитал первый экран статьи очень по диагонали) дается объяснение, что такое REST, почитайте:
https://habr.com/ru/post/38730/

Ответ мог быть примерно таким:
fetch('/api/user/1').then(res => res.json()).then(console.log);

miltorg 19.03.2020 19:58

Цитата:

Сообщение от Nexus (Сообщение 521526)
Запросы не получаются с удаленного сервера, а отправляются на него. С сервера Вы можете получить ответ на Ваш запрос.
"Rest-request" - это разновидность запроса такая?)

В этой статье, вроде бы, (прочитал первый экран статьи очень по диагонали) дается объяснение, что такое REST, почитайте:
https://habr.com/ru/post/38730/

Ответ мог быть примерно таким:
fetch('/api/user/1').then(res => res.json()).then(console.log);

1. Я знаю что такое Рест запрос.

2. Просто скопировали и всё? Почитайте внимательно исходное задание:

Как получить на клиенте Рест запрос с удалённого сервера?

Nexus 19.03.2020 22:02

Цитата:

Сообщение от miltorg
Я знаю что такое Рест запрос.

Чем "рест запрос" отличается от обычного запроса?
Я не знаю, что такое "рест запрос".

Цитата:

Сообщение от miltorg
Как получить на клиенте Рест запрос с удалённого сервера?

Никак, запросы передаются, а не получаются.

SuperZen 19.03.2020 22:15

мож это подразумевается https://learn.javascript.ru/server-sent-events )

Nexus 19.03.2020 22:20

SuperZen, вряд ли, если SSE имеется ввиду, то нафига там REST упоминать?

SuperZen 19.03.2020 22:32

Nexus, где есть два человека, это уже проблема )

miltorg 19.03.2020 23:03

Цитата:

Сообщение от Nexus (Сообщение 521536)
Я не знаю, что такое "рест запрос".

Беда.

CryNet 18.09.2020 10:56

Ох чувствую miltorg-а забанят и на javascript.ru, на linux.org.ru уже забанили, забанят и здесь.


Часовой пояс GMT +3, время: 00:57.