API умеет возвращать данные в форматах JSON и XML. Форматом ответа можно управлять с помощью заголовка запроса Accept
:
Accept: application/json
— выдать данные в формате JSON;Accept: application/xml
— выдать данные в формате XML.По умолчанию JSON, он же указан в примерах.
Целые числа, если не указано иное, являются беззнаковыми 64-разрядными целыми числами.
Обязательные параметры запросов выделены.
Базовый урл обязательно включает в себя версию API:
https://sishot.ru/api/v1
Важно сделать базовый урл в приложении настраиваемым, потому что со временем он может меняться:
http
поменяется на https
, сменится мажорная версия API и так далее…
Все урлы API даны относительно базового урла.
Например, указанный /image
разворачивается в https://sishot.ru/api/v1/image
.
К любому из урлов можно применять методы HEAD
и OPTIONS
.
После запроса OPTIONS
в ответном заголовке Allow
будет содержаться список доступных для этого урла методов.
Например OPTIONS /image
→ Allow: POST, HEAD, OPTIONS
, а OPTIONS /image/5hBVPemcAAXW
→ Allow: GET, HEAD, OPTIONS
.
Если какой-либо метод к данному урлу неприменим, код ответа — 405
,
а ответный заголовок Allow
содержит список доступных для этого урла методов (как и в OPTIONS
).
Более подробный список используемых HTTP-кодов ответа см. ниже.
POST /image
Создаёт новое изображение.
Если параметры пользователя (token
) не переданы, файл будет создан анонимно (без авторства определённого пользователя).
Параметры:
multipart/form-data
);Формат JSON-ответа:
{
"id": "5hBVPemcAAXW", // идентификатор — строка
"name": "гимн.png", // исходное имя файла — строка
"caption": "подпись", // подпись к изображению — строка, может быть `null`
"type": "image/png", // MIME-тип файла — строка
"size": 100666, // размер файла — 32-битное беззнаковое целое число
"url": "https://…", // ссылка на просмотр файла — строка
"userId": null // идентификатор автора — целое число, может быть `null`
}
Если валидация данных не увенчается успехом (код ответа — 422
),
тело ответа будет содержать список полей запроса и их сообщения об ошибках.
После успешного создания (код ответа — 201
), в ответном заголовке Location
будет указан урл
для получения информации о файле методом GET
(см. ниже).
Обратите внимание, что значение заголовка Location
не равно значению поля url
в теле ответа, у этих урлов разные смыслы:
первая ссылка предназначена для получения информации о файле, вторая — для просмотра файла на сайте.
(Например, https://sishot.ru/api/v1/image/5hBVPemcAAXW и https://sishot.ru/i/5hBVPemcAAXW.)
GET /image/@id
Получить информацию об изображении с идентификатором @id
.
Идентификатор — строка символов a—z
, A—Z
, 0—9
, -
, _
.
Например, 5hBVPemcAAXW
.
Регвыр для валидации строки — /^[a-zA-Z0-9_-]+$/
.
Параметров нет.
Возвращает такой же JSON-объект, как и POST-метод.
Location
содержит урл новосозданного ресурса;DELETE
-запросе);Allow
содержит список доступных методов;POST
-запрос, тело ответа содержит текст ошибки;X-Rate-Limit-Reset
содержит время в секундах, когда ограничение будет снято, и запрос можно будет повторить;С Днём победы!
/**
* API для sishot.ru
*
* @author MaximAL
* @date 2015-05-09 С Днём победы!
* @time 1:15
* @version 1.0
* @since 2015-05-09 Первая версия документа.
* @copyright © MaximAL, Sijeko 2015
**/