Общий синтаксис#
В этом документе рассматривается синтаксис запросов к API и получаемых ответов.
Структура запроса#
Запрос API состоит из следующих элементов:
<method> <URI>[<query>]
[<headers>]
[{<body>}]
<method> – указывает, какого рода действие нужно выполнить с ресурсом:
GET – получение данных об объекте (ресурсе) или данных в виде списка объектов по указанному URI.
POST – создание нового объекта или выполнение команды контроллера.
PUT и PATCH – обновление указанного объекта.
DELETE – удаление объекта.
<URI> – указывает на конкретный ресурс, с которым необходимо выполнить действие. При необходимости к URI добавляют параметры запроса (query string).
<headers> – заголовки HTTP содержат дополнительные метаданные запроса, такие как:
тип контента;
параметры авторизации;
язык;
формат.
<body> – тело запроса содержит данные, которые нужно передать на сервер.
Например, в результате следующего запроса будет создан пользователь с именем <your_username> и паролем <your_password>:
POST https://<address>/api/v2/users/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer <your_token>
{
"username": "<your_username>",
"password": "<your_password>"
}
Здесь:
POST– указывает на то, что новый объект должен быть создан на сервере.https://<address>/api/v2/users/– указывает на конкретный ресурс, к которому обращается запрос. В данном случае запрос отправляется к ресурсуusersв рамках API.HTTP/1.1– название и версия протокола HTTP, используемые для связи между клиентом и сервером.Content-Type: application/json– заголовок, указывающий на то, что данные отправляются в формате JSON.Authorization: Bearer <your_token>– заголовок, указывающий на использование bearer token для авторизации и содержащий сам токен.
Структура ответа#
Ответ на HTTP-запрос состоит из следующих частей:
<status_line>
[<headers>]
[{<body>}]
<status_line> – статусная строка. Содержит название и номер версии используемого протокола, код статуса и его краткое описание. Самыми распространенными кодами статуса являются:
200 – запрос успешно выполнен.
201 – в результате запроса был создан новый объект.
202 – запрос получен, но еще не обработан.
301 – URL запрошенного ресурса был изменен навсегда. Новый URL будет указан в ответе.
302 – URL запрошенного ресурса был временно изменен.
400 – запрос был сформирован с ошибками.
403 – нет прав доступа к запрошенному ресурсу.
404 – запрошенный ресурс не существует.
500 – на сервере произошла ошибка, в результате которой он не может успешно обработать запрос.
<headers> – заголовки, содержащие сведения об ответе. Могут включать информацию о типе содержимого, кешировании, дате и времени, сервере, длине тела ответа и другие сведения.
<body> – тело ответа, содержащее данные, отправленные от сервера к клиенту в ответ на запрос. Может содержать данные различных типов, например, текст, JSON и так далее, в зависимости от запроса и целей обмена информацией.
Пример ответа на запрос о создании пользователя:
Здесь:
id– идентификатор созданного пользователя;type– тип пользователя;url– идентификатор ресурса;related– связанные ссылки на другие ресурсы, такие как команды, организации, проекты, роли и другие;summaryfields– сводные поля с информацией о возможностях пользователя, в данном случае: редактирование, удаление;created– дата и время создания пользователя;modified– дата и время последней модификации пользователя;username– название учетной записи пользователя;firstname– имя пользователя;lastname– фамилия пользователя;email– электронная почта пользователя;issuperuser– сведения о том, является ли пользователь системным администратором;issystemauditor– сведения о том, является ли пользователь системным аудитором;ldapdn– уникальное имя пользователя в системе LDAP;lastlogin– дата последнего входа пользователя;externalaccount– внешний аккаунт;auth– данные аутентификации пользователя.