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

OSCHINA-MIRROR/yfsoft-yf-api-server

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

yf-fpm-server

Изменения

Просмотреть журнал обновлений Изменения

План

Просмотреть План

0. Общая информация

yf-fpm-server — это легковесный сервер API, который позволяет интегрировать операции с данными баз данных (MySQL, MongoDB) через плагины, а также гибко расширять бизнес-логику.

  • Исходный код: https://github.com/team4yf/yf-fpm-server.git
  • Миникерн, исходный код
  • Основан на фреймворке Koa2
  • Поддерживает проверку безопасности ключей и секретов
  • Поддерживает проверку прав доступа к интерфейсу
  • Поддерживает расширение при помощи hook'ов
  • Поддерживает несколько версий интерфейсов одновременно

Обзор дизайна

Бэкграунд

Команда продукта начала с одного платформенного решения, но со временем расширилась до нескольких клиентских приложений, а также требует взаимодействия с несколькими независимыми системами. Поэтому требуется единый вход для ввода и вывода данных.- Node.js как событийно-ориентированное решение на основе движка V8 отлично подходит для работы с высоконагрузочными запросами, где нет необходимости в транзакционной целостности.

  • Используется Koa2 как HTTP-фреймворк, поскольку он достаточно легкий и простой, чтобы его можно было легко освоить, имеет небольшой объем и меньше проблем [улыбается].
  • Не используется стиль RESTful, так как бизнес требует ограничения доступа к данным, а также много общих маршрутов, что увеличивает затраты на управление маршрутами.
  • Принципы открыто-платформенного дизайна Taobao и JD используются для определения единого входа, используя параметры для определения бизнес-маршрутов, обеспечивая гибкость в разработке бизнес-приложений.##### Определение

Сервер имеет только один вход /api, принимает только запросы в формате application/json, определены следующие параметры:

  • Входящие параметры
Название параметра Тип Обязательность Описание параметра Значение по умолчанию Пример
method String Да Бизнес-функция, которую следует вызвать - -
appkey String Да Уникальный ключ приложения - -
timestamp Number Да Временная метка приложения, используемая для проверки актуальности запроса - 13-значная метка
v String Нет Версия вызываемого сервисного интерфейса - -
param Object Нет Параметры, необходимые для бизнес-функции, передаются в виде объекта JsonObject - -
sign String Да Сортировка параметров интерфейса в алфавитном порядке, добавление masterKey=xxx [ключ берется из зарегистрированного ключа],
преобразование всех значений параметров в urlencode, применение MD5 шифрования, получение 32-битного ключа
- -
:---------: :--------: :----------: :------:
errno Число Да Код ошибки бизнес-функции, обычно равен 0, что указывает на успешное выполнение. Значение меньше 0 говорит о возникновении ошибки, причины которой можно узнать с помощью описаний приложения.
message Строка Нет В случае ошибки выводится сообщение об ошибке.
timestamp Число Нет Временная метка после завершения сервером обработки запроса.
data Объект/Массив Да Для типовых запросов бизнес-функции в этом поле содержится информация о результате запроса; конкретный тип данных — объект или массив — зависит от описаний различных бизнес-функций.
error Объект Нет Подробное описание ошибки

Такое设计不能满足现在的RESTful范式,但能够满足小型团队的需求,可以提高业务实现的开发效率; такое дизайн не может удовлетворить современный RESTful парадигмы, но может удовлетворить потребности небольших команд, что повышает эффективность разработки реализации бизнеса.### 1. Установка

$ npm install yf-fpm-server --save

2. Код

$ vi app.js
'use strict';
const { Fpm } = require('yf-fpm-server');
const fpm = new Fpm();
const biz = fpm.createBiz('0.0.1');
biz.addSubModules('test', {
  foo: async (args, ctx, before) => {
    return Promise.reject({ errno: -3001 })
  }
});
fpm.addBizModules(biz);
fpm.run()
  .then(() => {
    fpm.logger.info('готово...');
  });

3. Запустите его

$ node app.js

4. Глобальное определение ошибки#### Система определения системных ошибок | Код ошибки | Ошибка | Информация об ошибке | Метод решения |

|:-----------:|:------:|:-------------------:|:-------------:| | -900 | LOST_PARAM | Отсутствует обязательный параметр: [${col}]! | Проверьте переданные параметры в запросе | | -901 | NO_POST_DATA | POST данные отсутствуют! | В запросе не переданы необходимые параметры | | -902 | TIMEZONE_OVER | Разница между временными зонами превышает 30 минут! | Проверьте временные метки в переданных данных | | -903 | SIGN_ERROR | Неверная цифровая подпись параметра! | Проверьте процесс подписывания параметров | | -904 | PLUGIN_LOAD_ERROR | Отсутствует плагин: ${pname}, требуемый плагин: ${dname} | Проверьте зависимости между плагинами | | -905 | PARAM_IS_NOT_JSON | Параметр Param не является корректным JSON! | Убедитесь, что переданные данные имеют правильный формат JSON | | -906 | SQL_INJECTION | В переданных данных найдены ключевые слова SQL: ['drop', 'delete', 'truncate', ';', 'insert', 'update', 'set', 'use'] | Проверьте данные на наличие SQL-внедрений | | -907 | NOT_LATEST | Не самый новый версионный номер | Обновите до последней версии | | -908 | NOT_METHOD | Не удалось найти метод! | Убедитесь, что вызываемый метод существует | | -909 | BIZ_MODULE_EXTEND_ERROR | Расширенный бизнес-модуль версии ${version} не существует! | Убедитесь, что расширяемый модуль имеет существующую версию | | -910 | TABLE_REQUIRED | Таблица обязательна при использовании плагина DB! | Убедитесь, что передана таблица || -911 | VERSION_UNDEFINED | Версия вызываемого бизнес-компонента не определена! | Убедитесь, что указана версия компонента | | -912 | AUTH_ERROR | Ошибка авторизации! Проверьте ваш appkey ~ | Ваш appkey не прошёл проверку | | -913 | ROOT_ERROR | Ошибка авторизации! Проверьте права доступа вашего app ~ | Убедитесь, что у вас достаточно прав доступа | | -914 | BIZ_VERSION_REQUIRED | Обязательна версия бизнес-компонента | Убедитесь, что указана версия компонента | | -915 | HOOK_VERSION_REQUIRED | Не определена версия хука | Убедитесь, что указана версия хука | | -916 | HOOK_HANDLER_REQUIRED | Не определён обработчик хука | Убедитесь, что указан обработчик хука | | -920 | UNDEFINED_EXCEPTION | Неопределённый тип исключения | Проверьте код на наличие ошибок | | -999 | UNCAUGHT_ERROR | Системная незахватанная ошибка | Проверьте систему на наличие ошибок |

Комментарии ( 0 )

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

Введение

yf-api-server. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yfsoft-yf-api-server.git
git@api.gitlife.ru:oschina-mirror/yfsoft-yf-api-server.git
oschina-mirror
yfsoft-yf-api-server
yfsoft-yf-api-server
master