capibar-js v0.0.27
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.
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago