[프롬프트] API 문서 자동 생성 프롬프트 - 최적 프롬프트 레시피
💡 한 줄 요약: "이 코드 보고 API 문서 써줘"라는 단순 질의 시 발생하는 Happy-path(200 OK) 위주 편향, 에러 모델(RFC 7807/RFC 9457) 누락, 필드별 정밀 유효성 검증(Type/Enum/Range/Regex) 결여, 인증 및 속도 제한(Rate Limit) 헤더 생략을 완벽히 차단하고, OpenAPI 3.1 스키마와 프로덕션급 Markdown API 레퍼런스를 한 번에 도출하는 실전 프롬프트 레시피입니다.
1. 페인포인트 & 작업 목표
- 실제 작업 시나리오: Spring Boot, FastAPI, NestJS, Express, Go Fiber 등으로 백엔드 엔드포인트를 구현한 뒤 프론트엔드 팀, 외부 연동 고객사, 혹은 사내 타 스쿼드와의 협업을 위해 API 스펙을 신속히 문서화해야 하는 상황.
-
단순 프롬프트 요청 시 발생하는 4대 실패 원인:
- Happy-Path (200 OK) 편향 (Happy-Path Bias): "이 컨트롤러 보고 문서 써줘"라고 입력하면 성공 응답 한 가지만 작성하고, 클라이언트 연동에 필수적인 실패 응답(400, 401, 403, 404, 409, 422, 500)을 전면 침묵함.
- RFC 7807/RFC 9457 표준 에러 규격 부재: 프로덕션 필수 표준 에러 스키마(
type,title,status,detail,invalid_params[]) 없이 임의의{"error": "message"}문자열로 처리하여 프론트엔드 예외 처리를 무력화함. - 필드별 제약조건 및 유효성 검증 결여: 단순 타입(
string,number)만 적을 뿐, 필수 여부(required), 글자 수 제한, 정규표현식 패턴(regex), 허용 열거값(Enum)을 누락하여 런타임 검증 오류 유발. - 인증 및 전송 헤더 무시:
Authorization: Bearer <JWT>,Idempotency-Key,X-Request-Id,X-RateLimit-*등 실제 호출에 필수적인 헤더와 보안 스키마를 누락함.
-
최종 해결 목표:
- 수석 API 아키텍트(Principal API Architect) 페르소나 주입: 단순 코드 주석 변환이 아닌 계약 중심(Contract-First) 거버넌스 관점의 명세 추출.
- 완전 무결한 API 명세 6대 컴포넌트 강제: [엔드포인트 메타데이터, 보안/인증 헤더, 파라미터 테이블, 요청 본문 JSON Schema, 2xx 성공 및 4xx/5xx RFC 7807 에러 스펙, 재현 가능한 cURL CLI 예제].
- OpenAPI 3.1 & Markdown 듀얼 호환성 보장: Swagger UI/Redoc 등록과 개발자 포털(Wiki/Notion)에 즉시 임베딩 가능한 고밀도 레퍼런스 동시 생성.
2. 프롬프트 레시피 비교
3. 실행 결과 비교
가상의 결제 구독 생성 엔드포인트(POST /v1/billing/subscriptions) 코드를 두 프롬프트에 주입했을 때의 결과물 차이를 대조합니다.
4. 메커니즘 심층 분석
1. 역할 및 페르소나 주입 (Principal API Architect Persona)
단순 개발자 페르소나는 코드에 적힌 변수명만 텍스트로 치환합니다. 반면 Principal API Architect & Enterprise Governance Tech Lead 페르소나는 모델의 어텐션 윈도우를 시스템 계약(API Contract), 트랜잭션 무결성(Idempotency), 보안 스코프(RBAC), 실패 허용성 파라미터로 이동시켜 코드에 없더라도 결제/생성 엔드포인트에 멱등키와 409 Conflict 명세를 선제적으로 도출합니다.
2. 엄격한 음의 제약조건 (Negative Constraints)
LLM은 토큰 생성 비용을 절감하기 위해 본능적으로 "data": "..." 같은 더미 축약을 시도합니다. 프롬프트에 Do NOT output shallow placeholders와 at least 3 distinct error payloads MUST be explicitly rendered를 선언함으로써 실무에 즉시 쓸 수 있는 구체적 JSON 페이로드와 상태 코드를 생성하도록 강제합니다.
3. RFC 7807 / RFC 9457 스키마 주입 효과
IETF 공식 표준인 type, title, status, detail, invalid_params 스키마 키셋을 프롬프트에 주입하면, LLM은 인메모리 파서 역할을 수행하여 DTO 유효성 어노테이션(@NotBlank, @Min 등)을 파싱해 invalid_params 하위 배열로 자동 매핑합니다.
5. 실전 응용 팁 & 커스텀 가이드
📌 프로젝트 맞춤형 재사용 플레이스홀더 템플릿
You are a Principal API Architect.
Reverse-engineer the provided [{TARGET_FRAMEWORK}] code into an enterprise Markdown API specification.
### Context:
- Framework: {TARGET_FRAMEWORK} (e.g., FastAPI / Spring Boot / NestJS)
- Auth Strategy: {AUTH_STRATEGY} (e.g., Bearer JWT / API Key)
- Error Standard: {ERROR_STANDARD} (e.g., RFC 7807 Problem Details)
### Target Code:
{PASTE_CODE}
### Output Rules:
1. Include Header Table (Auth, Content-Type, Idempotency).
2. Generate Request Body Schema Table with Type, Nullability, Enum, and Regex.
3. Detail Success (200/201) and Failure (400/401/403/404/422/500) payloads.
4. Output ready-to-run curl command.
- Swagger / OpenAPI 3.1 YAML 내보내기: 마크다운 대신 Redoc/Swagger UI용 파일이 필요할 경우,
"Output the specification strictly in valid OpenAPI 3.1 YAML format within a single code block"지침을 추가하세요. - 대규모 컨트롤러 처리 팁: 엔드포인트 메서드가 수십 개인 경우 한꺼번에 주입하지 말고, 도메인/리소스 그룹 단위(1회당 1~2개 엔드포인트)로 분할 입력해야 필드 제약조건과 에러 페이로드의 정밀도가 극대화됩니다.