Feathers.js 요청 ID 미들웨어
프로젝트 준비
npm install @feathersjs/cli -g
미들웨어 생성 및 작성
feathers generate middleware
. 여기에서 미들웨어를 생성하는 방법을 확인할 수 있습니다. uuidv4
를 사용하고 싶습니다. 따라서 uuid 사용: npm install uuid @types/uuid
또는 yarn install uuid @types/uuid
(yarn을 사용하는 경우)를 설치하십시오. src/middleware/request-id.ts
에서 파일을 찾을 수 있습니다.import { v4 as uuidv4 } from 'uuid';
import { Request, Response, NextFunction } from 'express';
export default () => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/explicit-module-boundary-types
return (req: Request, res: Response, next: NextFunction) => {
const requestId= uuidv4();
if (!req.feathers) {
req.feathers = {};
}
req.feathers.requestId = requestId;
next();
};
};
requestId
. src/hooks/log.ts
를 업데이트합니다.// A hook that logs service method before, after and error
// See https://github.com/winstonjs/winston for documentation
// about the logger.
import logger from '../logger';
import util from 'util';
import { HookContext, Hook } from '@feathersjs/feathers';
// To see more detailed messages, uncomment the following line:
logger.level = 'debug';
export default function (): Hook {
return (context: HookContext) => {
const { params } = context;
const requestId = params.requestId;
logger.debug(`Request Id: ${requestId}`);
// This debugs the service call and a stringified version of the hook context
// You can customize the message (and logger) to your needs
logger.debug(
`${context.type} app.service('${context.path}').${context.method}()`,
);
if (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
typeof (context as any).toJSON === 'function' &&
logger.level === 'debug'
) {
logger.debug('Hook Context', util.inspect(context, { colors: false }));
}
if (context.error && !context.result) {
logger.error(context.error.stack);
}
};
}
src/app.ts
를 업데이트할 수 있습니다.// another code...
// Configure a middleware for 404s and the error handler
app.use(express.notFound());
app.use(express.errorHandler({ html: false }));
app.hooks(appHooks);
export default app;
src/hooks/common-error.ts
에서 찾을 수 있습니다.// Use this hook to manipulate incoming or outgoing data.
// For more information on hooks see: http://docs.feathersjs.com/api/hooks.html
import { Hook, HookContext } from '@feathersjs/feathers';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export default (options = {}): Hook => {
return async (context: HookContext): Promise<HookContext> => {
if (context.error) {
console.log(context);
const { params } = context;
const requestId = params.requestId;
const requestIdObject = {
requestId,
};
context.error.errors = Object.assign(
context.error.errors,
requestIdObject,
);
}
return context;
};
};
requestId
가 표시됩니다. 이렇게 하면 오류를 추적하는 데 도움이 됩니다. 고맙습니다
그게 다야 다른 제안이 있다면. 여기에 댓글을 달아주세요.
고맙습니다. :)
Reference
이 문제에 관하여(Feathers.js 요청 ID 미들웨어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/berviantoleo/feathersjs-request-id-middleware-5co0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)