Описание API
Чтобы использовать API необходимо знать идентификатор пользователя и токен. Их можно получить в личном кабинете после авторизации.
- В разделе "Описание API" в выпадающем списке, можно запросить параметры обращения к той или иной конечной точке.
- Рекомендуем изучить концепцию API в одноименном разделе для получения первичного представления.
- Под концепцией приведены наброски кода в популярных языках программирования.
- Воспользуйтесь заготовками в Postman для наглядности.
Описание API
Концепция API
Концепция API
Запросы
- Только POST-запросы в формате
JSON
принимаются скриптом. - Вы можете передать
application/json
данные, исключая загрузки файлов. - Запрещаются запросы из браузеров (нужно убрать заголовок
User-Agent
, в т.ч. в Postman)
Обрабатываемые символы и знаки
Допустимые символы для передачи в API: "a-z
", "A-Z
", "0-9
", "-
", "_
", "/
", а также точка
, пробел
. Отправляйте в URL-строке, в ключах и значениях только указанные символы, в ином случае система вернет ошибку, причем, не всегда с описанием проблемы.
Основной узел
Основным узлом обращения всех запросов к API является /api/
.
Версия API
Версия API при запросе определяется добавлением к основному узлу названия версии. Например, /api/v1/
.
Логика запроса к API
Формирование URL запроса
В адресе URL, после указания версии API, вы определяете конечную точку для обращения. Например, /api/v1/passwords/generate
- конечная точка для генерации паролей. Этот параметр можно увидеть в описании к конечной точке в ключе endpoint
.
Формирование тела запроса
В теле запроса существуют два обязательных параметра, которые всегда должны присутствовать - через них система верифицирует запрос:
user_id
rd_api_token
Также есть один не всегда обязательный (зависит от узла) параметр, через который передаются детали запроса:
query_details
Детали запроса можно найти в описании к той или иной конечной точке. Соответствующие ключи отмечены цветом.
Пример URL для запроса
https://rd.statusnick.com/api/v1/passwords/generate
Пример тела запроса
{
"user_id": "user_id",
"rd_api_token": "api_token",
"query_details": {
"key_1": "string_value_1",
"key_2": "string_value_2",
"key_3": [
"array_value_1",
"array_value_2",
]
}
}
Наброски кода
PHP
// Набросок запроса к генератору паролей в API версии 'v1'
// На практике лучше разнести на разные классы: формирование конечной точки, деталей запроса, отправка, обработка результата и т.д.
class Q
{
public function run(
string $api_url,
string $api_version,
string $api_endpoint,
string $user_id,
string $token
)
{
// Детали запроса
$query_details = [
"uppercase_letters" : true,
"lowercase_letters" : ["a", "b", "c"],
"specials": true,
"count": 5,
"length": 10,
// прочие параметры запроса
];
// Формируем набор POST-данных
$send_data['user_id'] = $user_id;
$send_data['rd_api_token'] = $token;
$send_data['query_details'] = $query_details;
// Определяем URL для запроса
$url = $api_url . '/' . $api_version . '/' . $api_endpoint;
$curl = curl_init();
curl_setopt_array(
$curl,
[
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POSTFIELDS => json_encode($send_data),
CURLOPT_HTTPHEADER => array("Content-Type: application/json"),
]
);
$result = curl_exec($curl);
$result_json = json_decode($result, 1);
curl_close($curl);
return $result_json;
}
}
// Пример использования
$q = new Q();
$result = $q->run(
'https://rd.statusnick.com/api',
'v1',
'passwords/generate',
'your_user_id',
'your_token'
);
// Пример извлечения данных
$usefull_data = !empty($result['success']['data']) ? $result['success']['data'] : [];
if ($usefull_data):
foreach($result as $key => $value):
echo $value['password'];
echo '<br>';
endforeach;
endif;
JS
class Q {
async run(api_url, api_version, api_endpoint, user_id, token) {
// Детали запроса
const query_details = {
uppercase_letters: true,
lowercase_letters: ["a", "b", "c"],
specials: true,
count: 5,
length: 10,
// прочие параметры запроса
};
// Формируем набор POST-данных
const send_data = {
user_id: user_id,
rd_api_token: token,
query_details: query_details
};
// Определяем URL для запроса
const url = `${api_url}/${api_version}/${api_endpoint}`;
try {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
// Убрать заголовок User-Agent
},
body: JSON.stringify(send_data)
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = await response.json();
return result;
} catch (error) {
console.error('Error:', error);
return null;
}
}
}
// Пример использования
const q = new Q();
(async () => {
const result = await q.run(
'https://rd.statusnick.com/api',
'v1', 'passwords/generate',
'your_user_id',
'your_token'
);
console.log(result);
// Пример извлечения данных
if (result && result.success && result.success.data) {
const useful_data = result.success.data;
useful_data.forEach(item => {
console.log(item.password);
});
}
})();
Python
// Пока не проработан