코드에서 API 명세 표 뽑기

엔드포인트와 요청·응답 항목을 표로 정리한다

프롬프트 · 변수 3개

저는 {{프레임워크}}로 만든 서버의 API 문서를 정리하려고 합니다. 아래는 실제로 돌아가고 있는 라우터·컨트롤러 코드입니다.

코드에 실제로 적혀 있는 엔드포인트만 찾아 명세로 정리해 주세요. 경로, HTTP 메서드, 요청 파라미터(이름·위치·타입·필수 여부), 응답 필드, 오류 응답을 뽑아 주세요.

결과는 {{문서 형식}}으로 만들어 주세요. 엔드포인트마다 한 줄 설명을 먼저 쓰고, 그 아래에 "이름 · 위치(경로/쿼리/본문) · 타입 · 필수 · 설명" 표를 붙여 주세요.

코드에서 확인되지 않는 항목은 지어내지 말고 "코드에서 확인 불가"라고 적어 주세요. 타입이 코드에 명시되어 있지 않아 추정한 것은 옆에 (추정)이라고 표시하고, 인증이나 권한 검사가 걸려 있는 엔드포인트는 따로 표시해 주세요.

코드: """ {{코드}} """

복사한 뒤 여기에 붙여 넣으세요 · ChatGPT·Claude는 프롬프트를 실은 채 열립니다 ChatGPT에서 열기 ↗Claude에서 열기 ↗Gemini에서 열기 ↗뤼튼에서 열기 ↗ 빌더에서 고치기 수업용 카드 이미지 받기

이 프롬프트에는 개인정보가 들어갈 수 있는 변수가 있습니다. 실제 이름·번호·회사명은 가명으로 바꿔 넣으세요.

결과 예시

엔드포인트 1개가 나왔고, 코드에 타입이 없는 항목은 (추정), 값이 없는 응답 필드 3개는 "코드에서 확인 불가"로 표시됐다. 인증이 걸린 엔드포인트라는 표시도 붙었다.

POST /api/orders — 주문을 만든다. 인증 필요(auth 미들웨어)

이름 위치 타입 필수 설명
itemId 본문 문자열(추정) 필수 없으면 400
quantity 본문 숫자(추정) 선택 생략 시 1

오류는 400 하나만 적혔고 인증 실패 응답은 확인 불가로 남았다. 미들웨어 코드도 함께 넣으면 그 칸이 채워진다.

Claude에서 실제로 실행해 확인 · 2026-09

왜 이렇게 쓰는가

맥락
저는 {{프레임워크}}로 만든 서버의 API 문서를 정리하려고 합니다. 아래는 실제로 돌아가고 있는 라우터·컨트롤러 코드입니다.
과제
코드에 실제로 적혀 있는 엔드포인트만 찾아 명세로 정리해 주세요. 경로, HTTP 메서드, 요청 파라미터(이름·위치·타입·필수 여부), 응답 필드, 오류 응답을 뽑아 주세요.
형식
결과는 {{문서 형식}}으로 만들어 주세요. 엔드포인트마다 한 줄 설명을 먼저 쓰고, 그 아래에 "이름 · 위치(경로/쿼리/본문) · 타입 · 필수 · 설명" 표를 붙여 주세요.
제약
코드에서 확인되지 않는 항목은 지어내지 말고 "코드에서 확인 불가"라고 적어 주세요. 타입이 코드에 명시되어 있지 않아 추정한 것은 옆에 (추정)이라고 표시하고, 인증이나 권한 검사가 걸려 있는 엔드포인트는 따로 표시해 주세요.
입력 자료
코드: """ {{코드}} """

API 문서 작성을 ChatGPT에 맡길 때 가장 자주 나는 사고는, 코드에 없는 파라미터가 표에 들어가는 것입니다. 코드만 던져 주면 AI는 흔한 REST 관례를 떠올려 page, limit, sort 같은 항목을 그럴듯하게 채웁니다. 그 문서를 보고 개발한 사람은 없는 파라미터를 실어 호출하다 400을 받습니다.

과제 문단이 "코드에 실제로 적혀 있는 엔드포인트만"이라고 못 박는 이유가 여기 있습니다. 뽑을 항목을 경로·메서드·요청·응답·오류로 나열한 것도 같은 목적입니다. 목록을 주지 않으면 AI는 경로와 한 줄 설명만 적고, 정작 필요한 요청 본문 구조를 건너뜁니다. 오류 응답을 항목에 넣어 둔 것도 같은 이유입니다. 성공 응답만 적힌 문서는 화면을 만들 때 거의 도움이 되지 않습니다.

맨 앞에서 프레임워크를 밝히는 것은 라우팅 규칙과 데코레이터가 제품마다 다르기 때문입니다. @RequestParam 이 쿼리인지 본문인지, req.params 가 경로 변수인지는 프레임워크를 알아야 판단됩니다. 형식에 "위치(경로/쿼리/본문)" 열을 넣은 것도 이 구분을 표에 남겨 두기 위해서입니다.

제약의 "코드에서 확인 불가"와 (추정) 표시는 API 명세서 자동 생성에 꼭 필요한 안전장치입니다. 빈칸을 두면 AI는 채우려 들지만, 적을 말이 정해져 있으면 모르는 것을 모른다고 적습니다. 코드를 """ 로 감싼 것은 주석에 섞인 "TODO: 이 부분은 무시" 같은 문장이 지시로 읽히지 않게 하기 위해서입니다.

용어가 낯설면 아하AI에서: hallucination, output-format

나쁜 예와 비교

흔한 나쁜 예

이 코드 보고 API 문서 만들어줘 router.post('/api/orders', auth, async (req, res) => { ... (코드 붙여넣기)

표는 나오지만 코드에 없는 page·limit 같은 파라미터가 섞이고, 필수 여부와 파라미터 위치가 빠져 그대로 쓰면 호출이 실패합니다. 오류 응답은 아예 빠지는 일이 많아, 결국 프런트엔드가 실패 케이스를 하나씩 물어보게 됩니다. 여러 엔드포인트를 한 번에 붙이면 형식도 제각각이라 나중에 문서를 이어 붙이기도 어렵습니다.

변형

호출 예시까지 함께 넘겨야 할 때

호출 예시까지 함께 넘겨야 할 때

아래 {{프레임워크}} 코드의 엔드포인트마다 요청 예시(curl 한 줄)와 성공·실패 응답 JSON 예시를 만들어 주세요. 값은 코드에서 확인되는 필드만 쓰고, 코드에 없어 임의로 채운 값은 sample 로 적은 뒤 그 자리를 표시해 주세요.

""" {{코드}} """

문서를 읽는 쪽이 바로 시험해 볼 수 있게 예시를 요구했습니다. 임의로 채운 값을 표시하게 해야 예시가 사실처럼 굳어지지 않습니다.

비개발자에게 설명해야 할 때

비개발자에게 설명해야 할 때

아래 {{프레임워크}} 코드에 있는 엔드포인트를 기획자도 읽을 수 있게 "무엇을 하는 기능인가 · 언제 호출되는가 · 무엇이 있어야 동작하는가" 세 열 표로 정리해 주세요. 필드 이름과 타입은 적지 말고, 화면에서 벌어지는 일로 설명해 주세요.

""" {{코드}} """

기능 범위를 합의할 때 쓰는 형태입니다. 타입을 빼야 문서가 짧아지고 논의가 기능 자체에 머뭅니다.

모델별 주의

코드가 여러 파일에 나뉘어 있으면 라우터 파일을 하나씩 넣고, 마지막에 "지금까지 만든 표를 하나로 합쳐 줘"라고 요청하세요

관련 프롬프트

마지막 수정 2026-09-02 · 잘못된 점이 있나요? 알려 주세요