LINUX.ORG.RU

Одно и то же имя файла и адрес, но разное содержание

 , ,


0

2

Вопрос знатокам. Есть некоторый сайт (найти его сейчас не смогу), на котором, в целях самообразования, я ввожу в адресную строку браузера вот такой адрес:

http://www.example.com/files/file.json?id=000000001

- и тогда в окне браузера появляется вот такой json-файл:

{
    "Foo": "...",
    "Bar": "..."
}

Если я изменю id, при этом оставив остальную часть адреса прежней, то есть:

http://www.example.com/files/file.json?id=000000002

- тогда в окне браузера появялется другой json-файл. Например:

{
    "Abc": "...",
    "Xyz": "..."
}

А если я введу адрес без id, то есть:

http://www.example.com/files/file.json

- тогда мне и вовсе не покажут ничего. Просто белый экран.

Уверен, это какая-то базовая фишка, которую я, как новичок, не понимаю. Может кто-нибудь объяснить?

В тегах указаны базы данных и ЦМС, потому что есть подозрение, что делается это именно как-то через них.

Deleted
Ответ на: комментарий от Deleted

Спасибо конечно, хотя я ничего не понял. Это один файл? Если один, то почему содержание разное? Или это два файла с одинаковыми именами? Тогда как они могут находиться в одном и том же каталоге? Либо это и вовсе не файл в привычном смысле слова (как картинка блондинка.jpg на рабочем столе), а как-то хитро вынимается из базы данных?

Deleted
()

вводи лучше в интересах революции:)

ты делаешь запрос серверу, сервер сконфигурирован так, что он обрабатывает твой запрос определенным образом. Могло быть так: ты вводишь http://www.example.com/files/file.json а тебе приходит html-документ с голой жопой лены берковой.

filequest
()
Ответ на: комментарий от Deleted

Это один файл?

нет, это разные файлы, которые скорей всего генеряться динамически, в зависимости от id

filequest
()
Ответ на: комментарий от Deleted

Либо это и вовсе не файл в привычном смысле слова (как картинка блондинка.jpg на рабочем столе), а как-то хитро вынимается из базы данных?

This. В самом простом случае есть некий обработчик URL, в котором прописано, что если юзер захотел получить URL files/file.json?id=<id>, то вызвать файл file_json.php, который смотрит, передал ли пользователь ему в $_GET['id'] какие-то данные. Если передал и это какой-то integer, то скармливает их в БД, получает ответ, рендерит страничку. Если не передал — рендерит пустую страничку. Приведённый выше пример обработчика это одна строчка в .htaccess

Это один файл?

Да, один.

почему содержание разное?

Потому что ты передаёшь ему разные параметры (в данном случае GET-запросом).

ivn86
()
Ответ на: комментарий от ivn86

Да, один.

ты хоть понимаешь, что юзеру приходит совсем не тот файл, который значится у тебя на сервере как какой-нибудь index.php. То что ты говоришь — это похапэ головного мозга в чистом виде.

filequest
()
Ответ на: комментарий от filequest

ты хоть понимаешь, что юзеру приходит совсем не тот файл, который значится у тебя на сервере как какой-нибудь index.php.

Во-первых, юзеру никакой файл не приходит вообще, т.к. он интерпретируется mod_php на сервере и возвращается юзеру как рендер html разметки.

Во-вторых, я заострил внимание на том, почему запрашивается file.json, а выполняется file_json.php (man: .htaccess, mod_rewrite, RewriteRule).

В-третьих, я написал как ?id= влияет на выхлоп.

В-четвёртых, PHP я привёл для примера. Описанное в том или ином виде работает в CGI, CMS-ках, фреймворках и пр. Да, будут нюансы с запросами в БД, обработкой URL, шаблонизацией вывода.

похапэ головного мозга

В общих чертах это работает так, как я написал, а я опираюсь на фремворки Yii для PHP и Flask для Python. Может неправильно или непонятно объяснил, но уж как смог. Если где-то это работает НЕ так — приведи пример, почитаю, проанализирую.

ivn86
()
Ответ на: комментарий от ivn86

возвращается юзеру как рендер html разметки.

Какой нахрен рендер. юзеру приходит текст готового документа.

filequest
()
Ответ на: комментарий от r_asian

Думаю, не это имелось в виду. По сети ходят последовательности байтов, там нет никаких файлов в привычном смысле. Поэтому вопрос ТСа об «одном и том же файле» не имеет особого смысла. сервер просто отправляет некие данные в зависимости от запроса(адреса). В данном случае, всегда разные данные. Такие вещи могут иметь смысл лишь в случае статики.

А об исполняемых файлах в контексте НТТР вообще речи нет, это протокол.

filequest
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.