@capibar/core
v0.1.22
Published
CapibarJS - это фреймворк для создания различных сервисов на основе `Node.js >= 18`,
Downloads
24
Readme
Capibar JS
CapibarJS - это фреймворк для создания различных сервисов на основе Node.js >= 18
,
Принципы:
DDD
transport-protocol-agnostic
GRASP
Low Coupling
High Cohesion
Он также предоставляет свою систему модульности, которая обеспечивает Низкую связанность Low Coupling
и Высокое зацепление High Cohesion
.
Demo: http://chotko-reklama.ru:5500
Example: https://github.com/CapibarJS/example
Install
npm install @capibar/core
# or yarn
yarn add @capibar/core
Node.js версия должна выше 18.x
Usage
Сначала импортируйте Server
из @capibar/core
и создайте экземпляр сервера:
const { Server } = require('@capibar/core');
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.