route.ts 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. import { NextRequest, NextResponse } from 'next/server';
  2. import { ResultDto } from '@/types/response/common';
  3. import { fetchJson } from '@/lib/utils/server';
  4. // 종목 가상보드 등 /api/boards/** (예: POST /api/boards/stock/posts)
  5. export async function GET(request: NextRequest, { params }: { params: Promise<{ path: string[] }> }) {
  6. const { path } = await params;
  7. const endpoint = `/api/boards/${path.join('/')}`;
  8. const url = new URL(request.url);
  9. const res: ResultDto = await fetchJson(`${endpoint}${url.search}`, { method: 'GET' });
  10. return NextResponse.json(res);
  11. }
  12. export async function POST(request: NextRequest, { params }: { params: Promise<{ path: string[] }> }) {
  13. const { path } = await params;
  14. const endpoint = `/api/boards/${path.join('/')}`;
  15. const contentType = request.headers.get('content-type') || '';
  16. const raw = await request.arrayBuffer();
  17. if (raw.byteLength > 0) {
  18. const res: ResultDto = await fetchJson(endpoint, {
  19. method: 'POST',
  20. body: raw,
  21. headers: contentType ? { 'Content-Type': contentType } : undefined
  22. });
  23. return NextResponse.json(res);
  24. }
  25. const res: ResultDto = await fetchJson(endpoint, { method: 'POST' });
  26. return NextResponse.json(res);
  27. }