refactor: API 서버 구조 개선 및 표준화
- 통합 에러 처리 시스템 구축: * utils/errorHandler.js: ApiError 클래스 및 에러 미들웨어 * 데이터베이스, 유효성 검사, 권한 에러 표준화 * 비동기 함수 래퍼 (asyncHandler) 추가 - 응답 포맷터 시스템 구축: * utils/responseFormatter.js: 일관된 API 응답 형식 * 성공, 페이지네이션, 인증, 파일업로드 등 전용 포맷터 * Express 응답 확장 미들웨어 - 유효성 검사 시스템 구축: * utils/validator.js: 스키마 기반 유효성 검사 * 필수 필드, 타입, 길이, 형식 검사 함수들 * 일반적인 스키마 정의 (사용자, 프로젝트, 작업보고서 등) - 코드 정리 및 표준화: * 삭제된 테이블 참조 제거 (work_report_audit_log 등) * 대문자 테이블명을 소문자로 통일 (Users -> users) * authController.js에 새로운 유틸리티 적용 예시 - 미들웨어 통합: * index.js에 에러 핸들러 및 응답 포맷터 적용 * 헬스체크 엔드포인트 개선
This commit is contained in:
@@ -4,6 +4,11 @@ const cors = require('cors');
|
||||
const path = require('path');
|
||||
const helmet = require('helmet');
|
||||
const rateLimit = require('express-rate-limit');
|
||||
|
||||
// 새로운 유틸리티들 import
|
||||
const { errorMiddleware } = require('./utils/errorHandler');
|
||||
const { responseMiddleware } = require('./utils/responseFormatter');
|
||||
|
||||
const app = express();
|
||||
|
||||
// 헬스체크와 개발용 엔드포인트는 CORS 이후에 등록
|
||||
@@ -31,6 +36,9 @@ app.use(helmet({
|
||||
app.use(express.urlencoded({ extended: true, limit: '50mb' }));
|
||||
app.use(express.json({ limit: '50mb' }));
|
||||
|
||||
// ✅ 응답 포맷터 미들웨어 적용
|
||||
app.use(responseMiddleware);
|
||||
|
||||
//개발용 CORS 설정 (수정됨)
|
||||
app.use(cors({
|
||||
origin: function (origin, callback) {
|
||||
@@ -92,13 +100,10 @@ app.get('/api/ping', (req, res) => {
|
||||
// ✅ 서버 상태 엔드포인트
|
||||
app.get('/api/status', (req, res) => {
|
||||
console.log('📊 Status 요청 받음!');
|
||||
res.status(200).json({
|
||||
status: 'running',
|
||||
res.health('running', {
|
||||
service: 'Hyungi API',
|
||||
version: '2.1.0',
|
||||
environment: process.env.NODE_ENV || 'development',
|
||||
uptime: process.uptime(),
|
||||
timestamp: new Date().toISOString()
|
||||
environment: process.env.NODE_ENV || 'development'
|
||||
});
|
||||
});
|
||||
|
||||
@@ -317,6 +322,8 @@ app.use('/api/tools', toolsRoute);
|
||||
// 📤 파일 업로드
|
||||
app.use('/api', uploadBgRoutes);
|
||||
|
||||
// ===== 🚨 에러 핸들러 (모든 라우트 뒤에 위치) =====
|
||||
app.use(errorMiddleware);
|
||||
|
||||
// ===== 🔍 API 정보 엔드포인트 =====
|
||||
app.get('/api', (req, res) => {
|
||||
|
||||
Reference in New Issue
Block a user