Spaces:
Sleeping
Sleeping
File size: 1,613 Bytes
3ec134e 9180083 3ec134e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | // backend/src/app.ts
import express from 'express';
import cors from 'cors';
import cookieParser from 'cookie-parser';
import { errorHandler } from './utils/errorHandler';
import { postsRouter } from './posts/router';
import { notesRouter } from './notes/router';
import { blogsRouter } from './blogs/router';
import { projectsRouter } from './projects/router';
import { uploadsRouter } from './uploads/router';
import { tagsRouter } from './tags/router';
import { authRouter } from './auth/router';
export const app = express();
// CORS ์ค์ (ํ๋ก ํธ์๋ ๋๋ฉ์ธ ๋ช
์)
app.use(cors({
origin: process.env.FRONTEND_ORIGIN, // ํ๋ก ํธ์๋ App Service ๋๋ฉ์ธ
credentials: true, // ์ฟ ํค ํ์ฉ
}));
// JSON ํ์
app.use(express.json({ limit: '5mb' }));
// ์ฟ ํค ํ์
app.use(cookieParser());
// ๋ผ์ฐํฐ ์ฐ๊ฒฐ
app.use('/api/posts', postsRouter);
app.use('/api/notes', notesRouter);
app.use('/api/blogs', blogsRouter);
app.use('/api/projects', projectsRouter);
app.use('/api/uploads', uploadsRouter);
app.use('/api/tags', tagsRouter);
app.use('/api/auth', authRouter);
// ๊ธฐ๋ณธ ์๋ด ํ์ด์ง (๋ฃจํธ ๊ฒฝ๋ก)
app.get("/", (req, res) => {
res.send(`
<h1>Portfolio Core Backend</h1>
<p>โ
Backend is running.</p>
<p>API endpoints are available under <code>/api/*</code>.</p>
<p>Frontend: <a href="${process.env.FRONTEND_ORIGIN}">${process.env.FRONTEND_ORIGIN}</a></p>
`);
});
// ํฌ์ค์ฒดํฌ ์๋ํฌ์ธํธ
app.get("/health", (req, res) => {
res.json({ status: "ok", timestamp: new Date().toISOString() });
});
// ์๋ฌ ํธ๋ค๋ฌ
app.use(errorHandler);
|