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 스펙이 좋은 코드를 만듭니다.