capibar-js
v0.0.27
Published
*Capibar JS* - это фреймворк для создания различных сервисов на основе `Node.js >= 16`, используя принципы `DDD`, `transport-agnostic`, `GRASP`. Он также предоставляет свою систему модульности, которая обеспечивает Низкую связанность `Low Coupling` и Выс
Downloads
22
Readme
Capibar JS
Capibar JS - это фреймворк для создания различных сервисов на основе Node.js >= 16
, используя принципы DDD
, transport-agnostic
, GRASP
.
Он также предоставляет свою систему модульности, которая обеспечивает Низкую связанность Low Coupling
и Высокое зацепление High Cohesion
.
Пример: https://github.com/Pysdbi/capibar-js-example
Install
npm install capibar-js
# or yarn
yarn add capibar-js
Node.js версия должна быть 16.x или 18.x
Usage
Пример пользовательского кода доступен в директории example
.
Сначала импортируйте Server
из capibar-js
и создайте экземпляр сервера:
const { Server } = require('capibar-js');
const server = new Server();
server.start();
По умолчанию запускаются Статический сервер из папки
app/static
и транспортные слоиhttp
иws
Затем создайте файл list.js
по пути app/ship/list.js
и добавьте следующее содержимое:
defineApi({
params: ['name:string', 'speed:!int', 'description:?string'],
returns: ['id'],
method: async ({name, speed, description}) => {
const id = Math.floor(Math.random() * 99)
const newObj = {id, name, speed, description}
newObj.description = newObj?.description ?? 'New description'
return newObj;
}
})
defineApi - Удобная обертка для описания файл-функции.
params - Входные параметры функции, которые валидируются и трансформируются с помощью класса Schema.
string[] | ISchemaDefine
returns - Выходные данные из функции.
string[] | ISchemaDefine
method - Бизнес-логика функции
api.ship.add(...)
.(...args) => Promise<any> | any
Пример вызова
Пример вызова функции из другой функции
api.ship.add({ name: 'first ship', speed: 11 })
.
Каждая такая функция является контроллером транспортов.
Например, функцию ship.add
можно получить по транспорту HTTP, выполнив запрос:
POST http://localhost:3000/api/ship/add
body:
{ "name": "ship", "method": "add", args: [{ name:'ship', speed:11 }] }
или по транспорту WebSockets:
{ "name": "ship", "method": "add", "args": [{"name": 123,"speed": 1}] }
Получение структуры API
Для получения структуры API можно вызвать ручку с параметрами:
{
"name": "_",
"method": "introspect",
"args": {}
}
Лицензия
MIT. Подробнее см. в файле LICENSE.