@ilb/node_rest
v2.0.3
Published
Node REST utils
Downloads
87
Keywords
Readme
Асинхронное выполнение кода
Установка
$ npm install --save @bb/node-async
Оглавление
Роутинг
Использование
Для одиночного роута
export default router(createScope).post(CreateOffer).put(EditOffer).build();
Для группы роутов:
export default (() =>
router(createScope).setPrefix('/api/offers/:uuid/')
.post('', CreateOffer)
.put('monitor', MonitorOffer)
.get('templates/:code', DownloadTemplates)
.build()
)();
createScope
- замыкание, которое выполняется перед запускомusecase
- CreateOffer, MonitorOffer, DownloadTemplates - классы
usecase
Юзкейсы
Должны наследоваться от ApiUsecase
, AccessorUsecase
или FileUsecase
export default class EditOffer extends ApiUsecase {
constructor({ ...scope }) {
super(scope);
this.permission = 'update_offers';
}
async initialize({ uuid }) {
// constructor
}
async process() {
// do something
}
async schema() {
// ajv schema for validation
}
}
export default class MonitorOffer extends AccessorUsecase {
constructor({ ...scope }) {
super(scope);
}
async process() {
// ...
if (condition) {
return { /* ... */ }; // завершение работы accessor
}
return null; // продолжение работы accessor
}
}
export default class DownloadTemplates extends FileUsecase {
constructor({ ...scope }) {
super(scope);
}
async process({ uuid }) {
// ...
return { file, contentType, filename };
}
}
run
Функция запускает выполнение переданной функции или промиса и возвращает UUID
операции.
run(fn, needClear = true)
Аргументы:
fn: (Function | Promise)
- обычная функция или асинхронная функция (async fn() ...) или промис.needClear: (boolean) = true
- флаг определяет требуется ли удалять файлы с результатами операции после того как checkResult вернул результат вызывающей стороне (по умолчаниюtrue
- т.е. удаляются). Срабатывает после возвращения результатов даже если функция завершилась с ошибкой (произошло исключение throw new Error) или успешном выполнении функции.
Ответ:
UUID операции.
Исключения (throw new Error):
Ошибки связанные с созданием файла во временной директории ОС с PID-ом процесса.
checkResult
Функция проверки результата выполнения операции.
checkResult(uuid)
Аргументы:
uuid: string
- UUID операции из функции run.
Ответ:
Если сервис отработал без ошибок:
{ status: string, data: string }
, где
status
=complete
,data
- результат операции.Если ошибки в процессе выполнения:
{ status: string, message: string }
, где
status
=error
,message
- текст сообщения об ошибке.Если запущенная операция всё ещё выполняется:
{ status: string }
, где
status
=launched
.
Исключения (throw new Error):
Ошибки чтения файла результата, файла ошибок, файла c PID процесса или ошибки при выполнении проверки наличия процесса по PID-у.
clearResult
Удаляет файлы результатов операции.
clearResult(): void
Аргументы:
Отсутствуют.
Ответ:
Отсутствует.
Исключения (throw new Error):
Отсутствуют (любые ошибки связанные с удалением файлов не возвращаются).