Opensource-проекты

Консольный клиент для Nats

Брокер запросов и сообщений Nats - показал себя отличным инструментом как для организации Pub/Sub взаимодействия, так и для организации связи между микросервисами. Для тестов и отправки/приема отладочной информации, мною написан консольный клиент nats-term. Его основные возможности:

Клиент написан на NodeJS и требует чтобы она была установлена на компьютере пользователя. Для использования клиента, достаточно один раз установить : его глобально:

npm install -g nats-term

После установки, для его запуска достаточно выполнить команду:

nats-term -h 127.0.0.1 -p 4222

Приведенные выше хост и порт - указывать не обязательно, они выставлены по умолчанию. Ключи хоста и порта следует использовать только в том случае, если они отличны от дефолтных.

API Сервер JsonRPC для взаимодействия через HTTP(s) и Nats

Подробная документация доступна на GitHub

Установка:

npm install jsonrpc-server-http-nats --save
            

Использование

const JsonRPCServer = require('jsonrpc-server-http-nats');

// Создаем экземпляр сервера
var server = new JsonRPCServer();

// Обработчик на метод Ping
server.on('Ping', (response) => {
    let error = null;
    let result = 'Pong';
    response(error, result);
});


// Запустим сервер по HTTP
server.listenHttp();

// Запустим сервер по nats
server.listenNats('nats://127.0.0.1:4222', 'TestChannel')
            

Клиент JsonRPC API для взаимодействия с сервером через HTTP(s) и Nats

Подробная документация доступна на GitHub

Установка:

npm install jsonrpc-client-http-nats --save
            

Использование

// Подключаем библиотеку
const JsonRPCClient = require('jsonrpc-client-http-nats');

// Создаем клиент для обращения по HTTP(s)
let httpClient = JsonRPCClient.http('http://127.0.0.1:8080');

// И(или) создадаем клиент для обращения через Nats с запросами в канал MyChannel
let natsClient = JsonRPCClient.nats('nats://127.0.0.1:4222', 'MyChannel');

// Отправляем запрос через HTTP(s)
httpClient.request('FirstMethod', { title: 'MyTitle' }, (err, result)=>{
    console.log(err, result);
})

// Отправляем запрос через Nats
natsClient.request('SecondMethod', { title: 'MyData' }, (err, result)=>{
    console.log(err, result);
})
            

Валидатор входящих параметров

Модуль предназначен для обработки данных, приходящих на API-сервер. Важное качество - ориентирован на клиенты, которые работают с типизированными языками (не позволяет строке присвоить False и т.п.) Поддерживает проверку следующих типов данных (для каждой проверки можно указать отдельно, обязательность и возможность Null`а):

const PC = require('params-checker');

let inputParams = {
    title: 'ParamsValidator',
    version: 1,
    inProduction: false,
    is_support: 'num'
}

let checker = PC.obj(true, false {      // Объект, обязателелен, не может быть NULL
    title: PC.str(true, true, 1, 64),  // Строка, обязательна, может быть NULL, от 1 до 64 символов
    version: PC.num(false, false, 1),   // Число, не обязательно, не менее 1-го
    inProduction: PC.bool(true, false),  // Булевый параметр, обязателен, не может быть NULL
    is_support: PC.enum(false, false, ['str','num','arr','obj','bool','enum'])  // Одно из возможных значений, не обязательно, не может быть NULL
})

var checkedParams;

try {
    checkedParams = checker.check(inputParams);
} catch (e) {
    console.log('Error: ' + e.message);
    return;
}

console.log(checkedParams);