Доступность, открытость и актуальность… API для любителей железных дорог, которые хотят разместить на своих Интернет-сайтах, группах в социальных сетях, может быть, каких-то локальных ресурсах несколько железнодорожных фотографий с достаточно подробным описанием, мы разработали два простых API-метода:

  • Any. Получение краткой информации об одной фотографии.
  • Any24. Получение краткой информации о 24-х любых фотографиях.

Методы возвращают либо один объект, либо массив объектов в виде JSON-сериализации, содержащие следующие свойства:

  • canonicalLink – строковое, URI – ссылка на страницу, где размещена фотография;
  • canonicalImageLink – строковое, URI – ссылка на изображение предварительного просмотра, размер фотографии 600 на 265 пикселей;
  • canonicalMediumLink – строковое, URI – зарезервировано на будущее, ссылка на изображение среднего размера – не более 800 пикселей в ширину, с сохранением основных пропорций, которое можно будет использовать, например в LightBox.
  • title – строковое – название изображения, например: “ЭП1П-044”,
  • description – строковое – описание изображения, например: “ЭП1П-044. Россия, Красноярский край, депо Красноярск-Главный (автор: provodnikpv, 13 июля 2014 г.)”

Вызов методов

Методы доступны для вызова по следующим URL-адресам, для просмотра ответа сервера можно просто перейти по ссылке:

Пример результата ответа от сервера:

{
    "canonicalLink": "https://rlpx.ru/photo/look/….html",
    "canonicalImageLink": "https://rlpx.ru/photo/get/...jpg",
    "canonicalMediumLink": "https://rlpx.ru/photo/get/...jpg",
    "title": "ЭП1П-044",
    "description": "ЭП1П-044. Россия, Красноярский край…"
}

Кэширование

Результат выполнения методов кэшируется, т.е. сохраняется на сервере в течении 10 минут, это необходимо, в первую очередь, для снижения нагрузки на сервер базы данных и для того, чтоб пользователь, при возврате на исходную страницу, видел уже знакомую подборку фотографий.

При необходимости получения более чем 24 фотографий, предлагаем Вам сохранять результаты во временной таблице локальной базы данных или кэшировать в памяти результаты запросов, например, за последний час. Ссылки на изображения и страницы могут изменяться по мере развития информационной подсистемы, поэтому сохранять их “на вечно” не рекомендуется.

Пример фотогалереи с использованием Bootsrap и PHP

Реальный пример вставки фотогалереи на сайте https://br.etrain.ru и других в рамках системы (вывод первых 12 фотографий из 24), а так же в подвале этого сайта (вывод ограничен первыми 6 фотографиями):

$apiUrl = 'https://v0.etrain.ru/v0.00/social/activity/any24';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $apiUrl);
$result = curl_exec($ch);
if(!$result) echo curl_error($ch);
curl_close($ch);
$elements = json_decode($result);
$spinnerTemplate = '<div class="container"><div class="row">';
$idx = 0;
$idxx = 0;
foreach($elements as $e) {
$idx += 1;
$idxx += 1;
$spinnerTemplate .= '<div class="col-xs-4" style="padding: 2px;"><div class="card"><a target="_blank" href="' . $e->canonicalLink . '" title="'. $e->title .'"><img style="width: 100%" src="' . $e->canonicalImageLink . '" alt="' . $e->description . '" class="card-img-top"/></a>';
$spinnerTemplate .= '</div></div>';
if($idx==3) { $spinnerTemplate .= '</div><div class="row">'; $idx = 0; }
if($idxx>=12) break;
}
$spinnerTemplate .= '</div></div>';
return $spinnerTemplate;