Зерно: 84884
Запомнить цвет
Сбросить цвет

Описание 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 для запроса

HTTP
https://rd.statusnick.com/api/v1/passwords/generate

Пример тела запроса

JSON
{
	"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
// Пока не проработан