next.js apinext.js api 호출next.js api routenext.js api 만들기next.js api post

Next.js api 라우트를 통한 데이터베이스 조작 (PostgreSQL)

KUKJIN LEE
KUKJIN LEE
2024년 8월 21일
187

Next.js의 API 라우트를 사용하면 app/api/users/route.js, app/api/restaurant/route.js 등의 파일만으로 데이터베이스 쿼리를 포함한 모든 백엔드 로직을 처리할 수 있습니다.

 

폴더 구조

app/
├── api/
│   ├── users/
│   │   └── route.js
│   └── restaurants/
│       └── route.js
└── lib/
    └── db.js

 

api 라우트 예시 (app/api/restaurants/route.js)

import { NextResponse } from 'next/server';
import pool from '@/lib/db';

export async function GET(request) {
  const { searchParams } = new URL(request.url);
  const id = searchParams.get('id');

  try {
    let query = 'SELECT * FROM restaurants';
    let values = [];

    if (id) {
      query += ' WHERE id = $1';
      values.push(id);
    }

    const result = await pool.query(query, values);
    return NextResponse.json(result.rows);
  } catch (error) {
    return NextResponse.json({ error: error.message }, { status: 500 });
  }
}

 

장점

  1. 간단한 설정: 별도의 서버 설정 없이 API를 구현할 수 있습니다.

  2. 파일 기반 라우팅: 파일 구조가 곧 API 구조가 되어 관리가 용이합니다.

  3. 풀스택 개발: 프론트엔드와 백엔드를 동일한 프로젝트에서 관리할 수 있습니다.

  4. 타입스크립트 지원: 타입 안정성을 확보할 수 있습니다.

 

단점

  1. 보안: API 라우트에서 직접 데이터베이스를 조작하므로, 입력 값 검증과 인증/인가 처리를 철저히 해야 합니다.

  2. 확장성: 대규모 애플리케이션의 경우, 로직이 복잡해지면 관리가 어려워질 수 있습니다.

  3. 성능: 복잡한 쿼리나 대량의 데이터 처리 시 성능 이슈가 발생할 수 있습니다.

 

대규모 프로젝트가 아닌 이상 Next.js api는 효과적이라 판단됩니다. 별도의 서버 설정 없이 api를 구현할 수 있어 관리가 용이했습니다. 단 대규모 프로젝트에서 Next.js api 도입 시 복잡도와 구조에 대한 검토가 필요하기 때문에 Next.js api를 활용하기 보다 전문적인 서버로 분리하는 것이 좋아보입니다.

관련 글

[SQL 입문] 필요한 데이터만 콕 집어 가져올 수 있는 WHERE 절

사용자는 테이블에 있는 모든 데이터를 다 보고 싶어 하지는 않습니다. 오히려 특정 항목에 대한 데이터만 가져오고 싶을 때가 훨씬 많습니다. 예를 들어, 어떤 사용자의 이메일이나 ID는 알고 있는데, 그 사람이 언제 우리 앱에 가입했는지 확인하고 싶다고 가정해 봅시다...

2026년 1월 27일10

SQL에서 SELECT란 무엇인가?

데이터베이스를 거대한 서류 보관함이라고 생각하면 됩니다. 보관함 안에는 수많은 데이터가 차곡차곡 쌓입니다. SELECT는 이 보관함에서 "내가 원하는 정보를 찾아줘!"라고 요청하는 명령어입니다. 이 과정을 전문 용어로 '쿼리(Query)'라고 부릅니다. &nbs...

2026년 1월 26일10

[SQL 기초] "언제 하나씩 다 넣어?" 데이터 한 번에 넣기

개발을 하다 보면 데이터베이스(DB)에 샘플 데이터를 대량으로 넣어야 할 때가 있습니다. 메뉴 100개를 추가해야 하는데 INSERT 문을 100번 쓰고 있다면? 너무 비효율적이죠! 오늘은 SQL에서 여러 데이터를 한 번에 넣는 '다중 삽입(Multiple Inse...

2026년 1월 21일13

SQL 데이터 삽입하기

데이터가 없는 데이터베이스는 연료 없는 로켓과 같습니다. 이제 'Missions' 테이블에 새로운 행(row)을 추가하는 방법을 알아보겠습니다. "삽입(Inserting)"은 '데이터 추가'를 의미합니다. 기존 Missions 테이블 ...

2026년 1월 20일12