API 개발 프롬프트

프롬프트코딩APIRESTGraphQL

API 개발을 위한 효과적인 프롬프트 패턴을 알아봅니다.


API 프롬프트 구조


REST API

기본 엔드포인트

Express.js로 REST API를 만들어줘.

리소스: /api/users

엔드포인트:
- GET /users - 목록 조회
- GET /users/:id - 단일 조회
- POST /users - 생성
- PUT /users/:id - 수정
- DELETE /users/:id - 삭제

요구사항:
- 입력 유효성 검사
- 에러 핸들링 미들웨어
- 응답 형식 통일

상세 API 스펙

Node.js + Express로 상품 API를 만들어줘.

엔드포인트: /api/products

GET /products:
- Query: page, limit, sort, category
- Response: { data: [], meta: { total, page } }

GET /products/:id:
- Response: { data: Product }
- 404 처리

POST /products:
- Body: { name, price, category, stock }
- Validation: name 필수, price > 0
- Response: 201 + created product

PUT /products/:id:
- Body: partial update 허용
- Response: updated product

DELETE /products/:id:
- Response: 204 No Content

페이지네이션

페이지네이션이 적용된 API를 만들어줘.

방식: Cursor-based pagination
Query 파라미터:
- cursor: 시작 위치 (선택)
- limit: 개수 (기본 20, 최대 100)

응답 형식:
{
  data: [...],
  pagination: {
    nextCursor: "xxx",
    hasMore: true
  }
}

GraphQL

스키마 정의

GraphQL 스키마와 리졸버를 만들어줘.

타입:
type User {
  id: ID!
  email: String!
  name: String!
  posts: [Post!]!
}

type Post {
  id: ID!
  title: String!
  content: String!
  author: User!
}

쿼리:
- users: [User!]!
- user(id: ID!): User
- posts(limit: Int): [Post!]!

뮤테이션:
- createUser(input: CreateUserInput!): User!
- createPost(input: CreatePostInput!): Post!

리졸버 구현

Apollo Server로 GraphQL 리졸버를 구현해줘.

기능:
- DataLoader로 N+1 문제 해결
- 인증 컨텍스트 활용
- 에러 핸들링

리졸버:
Query.users - 전체 사용자
Query.user - ID로 조회
User.posts - 사용자의 게시물 (DataLoader)
Mutation.createUser - 사용자 생성

인증/인가

JWT 인증

JWT 기반 인증 API를 만들어줘.

엔드포인트:
POST /auth/register - 회원가입
POST /auth/login - 로그인 (JWT 발급)
POST /auth/refresh - 토큰 갱신
POST /auth/logout - 로그아웃

요구사항:
- Access Token: 15분
- Refresh Token: 7일
- 비밀번호 해싱 (bcrypt)
- 인증 미들웨어

API Key 인증

API Key 인증 미들웨어를 만들어줘.

방식:
- Header: X-API-Key
- Rate limiting: 100 req/min
- Key 검증 및 사용자 식별

응답:
- 401: 키 없음
- 403: 유효하지 않은 키
- 429: 요청 제한 초과

파일 업로드

이미지 업로드 API

이미지 업로드 API를 만들어줘.

엔드포인트: POST /api/upload/image

요구사항:
- 허용 형식: jpg, png, webp
- 최대 크기: 5MB
- 이미지 리사이즈: 썸네일 생성
- S3 업로드 (또는 로컬 저장)

응답:
{
  url: "https://...",
  thumbnail: "https://...",
  size: 12345,
  mimeType: "image/jpeg"
}

에러 처리

통합 에러 핸들러

API 에러 처리 시스템을 만들어줘.

에러 형식:
{
  error: {
    code: "VALIDATION_ERROR",
    message: "Invalid input",
    details: [...]
  }
}

HTTP 상태 코드:
- 400: 잘못된 요청
- 401: 인증 필요
- 403: 권한 없음
- 404: 리소스 없음
- 409: 충돌
- 422: 유효성 검사 실패
- 500: 서버 에러

커스텀 에러 클래스 포함

문서화

OpenAPI/Swagger

Swagger 문서가 포함된 API를 만들어줘.

프레임워크: Express + swagger-jsdoc

요구사항:
- 각 엔드포인트 JSDoc 주석
- 요청/응답 스키마 정의
- 예시 포함
- /api-docs 경로로 UI 제공

실전 프롬프트

E-commerce API

전자상거래 백엔드 API를 만들어줘.

기술 스택: Node.js, Express, MongoDB

엔드포인트:
1. 상품 CRUD (/api/products)
2. 장바구니 관리 (/api/cart)
3. 주문 처리 (/api/orders)
4. 사용자 인증 (/api/auth)

요구사항:
- JWT 인증
- 재고 관리 (동시성 처리)
- 주문 상태 관리
- 입력 유효성 검사
- 통합 에러 처리

실시간 채팅 API

WebSocket 채팅 API를 만들어줘.

기술: Socket.io

이벤트:
- join_room: 채팅방 입장
- leave_room: 채팅방 퇴장
- send_message: 메시지 전송
- typing: 타이핑 표시

기능:
- 채팅방 관리
- 메시지 저장 (MongoDB)
- 온라인 사용자 목록
- 메시지 히스토리 조회

설명
스펙 명확히요청/응답 형식 상세히
에러 코드상태 코드와 에러 형식
인증 방식보안 요구사항 명시
예시 포함요청/응답 예시
문서화Swagger 등 문서화 요청

명확한 API 스펙이 좋은 코드를 만듭니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.