1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wuwenbin-bookmark

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
API.md 9.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 18:58 cff73c6

API интерфейс документ

Интерфейс вызова адреса: [baseUrl]/api/?do=[do], все запросы используют POST способ отправки, запрос данных нужно использовать RSA открытый ключ шифрования.

Ответные данные (в формате JSON) в случае авторизованного входа пользователя являются зашифрованными с помощью AES; в случае отсутствия авторизации данные не шифруются.

Интерфейс конфигурации

  • Импортировать db/token.sql в базу данных;
  • Настроить файл root/config/base.php, добавить конфигурацию RSA закрытого ключа:
// RSA закрытый ключ (содержание или имя файла)
$config["rsaPrivateKey"] = '...';

Способ генерации RSA открытого и закрытого ключей:

# Генерация закрытого ключа
openssl genrsa -out api.key 2048
# Извлечение открытого ключа из закрытого
openssl rsa -in api.key -out api.pub -pubout

Пример интерфейса (PHP)

include_once 'root/common/helper.php';
include_once 'root/include/misc/RSA.php';
include_once 'root/include/misc/AES.php';

// Адрес интерфейса
define('API_URL', 'http://localhost/bookmark/api/?do=[do]');
// Открытый ключ RSA
define('RSA_PUBLIC_KEY', '...');

/**
 * Вызов интерфейса
 *
 * @param string $do Название операции
 * @param array $params Параметры запроса
 * @param string $appSecret Ключ AES
 *
 * @return array|null
 */
function apiCall($do, array $params, $appSecret = null)
{
    // Шифрование данных
    $rsa = new RSA();
    $rsa->setPublicKey(RSA_PUBLIC_KEY);
    $data = $rsa->encryptWithPublicKey(json_encode($params));
    // Запрос POST
    $url = str_replace('[do]', $do, API_URL);
    $res = http($url, $data);
    // Расшифровка данных
    if (substr($res, 0, 1) != '{') {
        $aes = new AES();
        $res = $aes->decrypt($res, $appSecret);
    }
    // Ответные данные
    return json_decode($res, true);
}

Список интерфейсов

Авторизация пользователя

Запрос:

$do = 'User_Auth';
$params = array(
    'app_id' => 1,                  // Идентификатор приложения
    'app_secret' => '',             // Закрытый ключ приложения (локально сгенерированный 32-битный случайный номер)
    'oauth_type' => '',             // Тип третьей стороны аккаунта (weibo, qq, baidu)
    'oauth_token' => array(),       // Информация о доступе после третьей стороны входа (массив)
);

Ответ:

array(
    'status' => 1,                  // Статус (0: сбой; 1: успех)
    'msg' => '',                    // Сообщение подсказки
    'data' => array(                // Данные
        'user' => array(            // Информация пользователя
            'uid' => 1,             // Идентификатор пользователя
            'name' => '',           // Псевдоним пользователя
            'avatar' => '',         // URL изображения профиля пользователя
        ),
        'token' => '',              // Идентификатор сессии (другие операции требуют предоставления этого параметра)
        'expire_time' => 0,         // Время истечения сессии
        'create_time' => 0,         // Время создания сессии
    },
);

Список категорий

Запрос:

$do = 'Category_GetList';
$params = array(
    'token' => '',                  // Идентификатор сессии
);

Ответ:

array(
    'status' => 1,                  // Статус (0: сбой; 1: успех)
    'msg' => '',                    // Сообщение подсказки
    'data' => array(                // Данные
        array(
            'id'=> 1,               // Идентификатор категории
            'name' => '',           // Название категории
            'sort' => 1,            // Значение сортировки категории
            'is_default' => 0,      // Является ли категория по умолчанию (категории по умолчанию нельзя удалить)
            'is_private' => 0,      // Является ли это частной категорией
            'ctime' => 0,           // Время создания категории
        ),
        ...
    },
);

Добавление категории

Запрос:

$do = 'Category_Add';
$params = array(
    'token' => '',                  // Идентификатор сессии
    'name' => '',                   // Название категории
    'is_private' => 0,              // Является ли это частной категорией
);

Ответ:

array(
    'status' => 1,                  // Статус (0: сбой; 1: успех)
    'msg' => '',                    // Сообщение подсказки
    'data' => 1,                    // Идентификатор категории
);

Изменение категории

Запрос:

$do = 'Category_Edit';
$params = array(
    'token' => '',                  // Идентификатор сессии
    'id' => 1,                      // Идентификатор категории
    'name' => '',                   // Название категории
    'is_private' => 0,              // Является ли это частной категорией
);

Ответ:

array(
    'status' => 1,                  // Статус (0: сбой; 1: успех)
    'msg' => '',                    // Сообщение подсказки
    'data' => null,
);

Удаление категории

Запрос:

$do = 'Category_Edit';
$params = array(
    'token' => '',                  // Идентификатор сессии
    'id' => 1,                      // Идентификатор категории
);

Ответ:

array(
    'status' => 1,                  // Статус (0: сбой; 1: успех)
    'msg' => '',                    // Сообщение подсказки
    'data' => null,
);

Обмен категориями сортировки

Запрос:

$do = 'Category_Edit';
$params = array(
    'token' => '',                  // Идентификатор сессии
    'id1' => 1,                     // Идентификатор категории 1
    'id2' => 2,                     // Идентификатор категории 2
);

Ответ:

array(
    'status' => 1,                  // Статус (0: сбой; 1: успех)
    'msg' => '',                    // Сообщение подсказки
    'data' => null,
);

Список веб-адресов

Запрос:

Текст запроса отсутствует. ```
array(
    'status' => 1,                  // 状态(0:失败;1:成功)
    'msg' => '',                    // 提示信息
    'data' => array(
        'list' => array(            // 网址列表
            array(
                'id' => 1,          // 网址ID
                'title' => '',      // 网址标题
                'url' => '',        // 网址URL
                'ctime' => 0,       // 网址添加时间
                'cid' => 0,         // 分类ID
            ),
            ...
        ),
        'count' => 0,               // 网址总量
        'page' => 1,                // 页码
        'each' => 5,                // 每页数量
    ),
);

Добавление веб-сайта

Запрос:

$do = 'Link_Add';
$params = array(
    'token' => '',                  // 会话ID
    'cid' => 0,                     // 分类ID
    'title' => '',                  // Веб-сайт название
    'url' => '',                    // Веб-сайт URL
);

Ответ:

array(
    'status' => 1,                  // 状态(0:失败;1:成功)
    'msg' => '',                    // 提示信息
    'data' => 1,                    // Веб-сайт ID
);

Изменение веб-сайта

Запрос:

$do = 'Link_Edit';
$params = array(
    'token' => '',                  // 会话ID
    'id' => 1,                      // Веб-сайт ID
    'cid' => 0,                     // 分类ID
    'title' => '',                  // Веб-сайт название
    'url' => '',                    // Веб-сайт URL
);

Ответ:

array(
    'status' => 1,                  // 状态(0:失败;1:成功)
    'msg' => '',                    // 提示信息
    'data' => null,
);

Удаление веб-сайта

Запрос:

$do = 'Link_Delete';
$params = array(
    'token' => '',                  // 会话ID
    'id' => 1,                      // Веб-сайт ID
);

Ответ:

array(
    'status' => 1,                  // 状态(0:失败;1:成功)
    'msg' => '',                    // 提示信息
    'data' => null,
);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wuwenbin-bookmark.git
git@api.gitlife.ru:oschina-mirror/wuwenbin-bookmark.git
oschina-mirror
wuwenbin-bookmark
wuwenbin-bookmark
master