@ilb/node_rest v2.0.4
Асинхронное выполнение кода
Установка
$ 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):
Отсутствуют (любые ошибки связанные с удалением файлов не возвращаются).
10 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago