Слияние кода завершено, страница обновится автоматически
Соглашение:
Запрос:
Общие параметры:
Ответ:
POST /api/v2/app/config.get //запрос адреса вне
HEADER Sign=$sign //протокол подписи (сессия данных подписи, избежать изменения)
HEADER Token=$token //протокол токена (информация о сессии)
HEADER Content-type=application/json
BODY ::зашифрованный{ //параметры, зашифрованные целиком
"tag":"water"
}
HEADER Sign=$sign //протокол подписи (сессия данных подписи, избежать изменения)
HEADER Token=$token //протокол токена (информация о сессии)
BODY ::зашифрованный{
"code": 200,
"description":"",
"data": null //val или map или list
}
var app_id = "abc138356a624c15b1d1defb7c50ee23"; //номер канала, назначен бэкэндом
var app_secret = "e6eQ1hM2OrOFdfL8"; //ключ канала (используется для шифрования и подписи)
var client_ver_id = 101; //номер версии клиента 1.0.1
//
// Упаковка вызова протокола (токен передан через header[Token] из бэкэнда, просто передайте его обратно)
//
function call(var apiName, var args, var token) {
let json1 = JSON.stringify(args);
let json_encoded1 = base64Encode(aesEncrypt(json1, app_secret, "AES/ECB/PKCS5Padding", "utf-8")); //использование алгоритма aes для кодирования
//создание подписи
let timestamp = new Date().getTime();
let sign_content = `${apiName}#${client_ver_id}#${json_encoded1}#${app_secret}#${timestamp}`;
let sign_md5 = md5(sign_content, 'utf-8');
let sign = `${app_id}.${client_ver_id}.${sign_md5}.${timestamp}`;
//запросить и получить результат
let response = path("/api/v2.app/" + apiName)
.header("Token", token)
.header("Sign", sign)
.bodyTxt(json_encoded1)
.post();
let json_encoded2 = response.body().toString();
let sign2 = response.header("Sign");
let sign22 = md5(`${apiName}#${json_encoded2}#${app_secret}`, "utf-8");
//проверка подписи данных
if(sign2 != sign22){
throw "Данные были изменены!";
}
//расшифровка результата
let json2 = aesDecrypt(base64Decode(json_encoded2), app_secret, "AES/ECB/PKCS5Padding", "utf-8"); //использование алгоритма aes для декодирования
return JSON.parse(json2);
}
//
//Упаковка вызова интерфейса (на основе упаковки протокола, бизнес-упаковка)
//
function config_get(var tag){
return call("config.get", {tag:tag} , null);
}
//Пример вызова интерфейса
config_get("water");
Основные коды состояния:
Код состояния | Описание |
---|---|
200 | Успех |
400 | Ошибка, неизвестная ошибка |
4001010 | Канал не существует или больше не поддерживается |
4001011 | Интерфейс не существует или больше не поддерживается |
4001012 | Не соответствует стандарту |
4001013 | Проверка подписи не удалась |
4001014 | Недостающие или ошибочные параметры |
4001015 | Слишком часто |
4001016 | Вне белого списка |
4001017 | Превышение лимита |
4001018 | Шифрование и дешифрование не удалось |
4001021 | Сессия истекла или не была установлена |
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.