一键导入
api-pagination-standard
API 리스트 엔드포인트의 페이지네이션·필터링·정렬 구현을 분석하고, 통일된 표준 규격을 수립한다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
API 리스트 엔드포인트의 페이지네이션·필터링·정렬 구현을 분석하고, 통일된 표준 규격을 수립한다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
API 인증/인가(Authorization) 설계를 리뷰하고, 권한 체크 누락·스코프 설계 미흡·권한 상승 리스크를 탐지한다. 접근 통제의 안전성을 검증한다.
API 이용자를 위한 SDK 릴리스 노트 및 마이그레이션 가이드를 생성한다. 변경 사항을 클라이언트 관점에서 정리하고, 구체적인 전환 절차를 제공한다.
요구사항으로부터 RESTful API 엔드포인트를 설계한다. 네이밍 규칙, 리소스 단위, 에러 처리, 응답 구조를 일관되게 정의한다.
API 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다. 일관된 에러 핸들링 규칙을 정의한다.
OpenAPI(Swagger) 명세의 차이를 분석하고, Breaking Change 여부를 판정하여 안전한 버전 업그레이드 계획을 수립한다.
API 메이저 버전 전환(v1 → v2)을 위한 단계적 마이그레이션 계획을 수립한다.
| name | api-pagination-standard |
| description | API 리스트 엔드포인트의 페이지네이션·필터링·정렬 구현을 분석하고, 통일된 표준 규격을 수립한다. |
| argument-hint | [API 코드베이스|리스트 엔드포인트|대상 디렉토리] (선택: 선호 방식) |
| user-invocable | true |
| disable-model-invocation | true |
| allowed-tools | Read, Grep, Glob |
당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.
API의 리스트형 엔드포인트에서 사용되는 페이지네이션, 필터링, 정렬 방식을 분석하고 통일된 표준을 수립한다.
현행 구현의 불일치 지점을 식별하고, 클라이언트가 일관된 방식으로 데이터를 조회할 수 있도록 표준 스펙을 정의한다.
대용량 데이터 처리 효율성, 성능, 사용성의 균형을 고려한다.
현행 구현 분석
page, limit, offset, cursor, per_page, skip, take 등 검색sort, order, order_by) 탐색페이지네이션 방식 결정
필터링 규격 설계
정렬 규격 설계
응답 구조 표준화
이행 계획 수립
## 페이지네이션·필터·정렬 표준 규격서
### 현행 분석
#### 발견된 패턴
| 엔드포인트 | 페이지네이션 | 필터 | 정렬 | 통일 여부 |
|------------|--------------|-------|-------|------------|
| [PATH] | [limit/offset] | [query 기반] | [sort=] | 불일치 |
#### 불일치 항목
| 항목 | 패턴 A | 패턴 B | 대상 엔드포인트 |
|------|--------|--------|----------------|
| 페이지 크기 | limit | per_page | [/users, /orders] |
### 표준 규격
#### 페이지네이션
- **채택 방식**: Cursor 기반 (대규모 데이터 대응)
- **선정 이유**: 대용량 데이터에서 안정적이며 offset 성능 저하 방지
- **기본 페이지 크기**: 20
- **최대 페이지 크기**: 100
**요청 예시**
GET /api/v1/resources?page=2&per_page=20
**응답 구조**:
```json
{
"data": [...],
"meta": {
"current_page": 2,
"per_page": 20,
"total_count": 150,
"total_pages": 8
},
"links": {
"first": "/api/v1/resources?page=1&per_page=20",
"prev": "/api/v1/resources?page=1&per_page=20",
"next": "/api/v1/resources?page=3&per_page=20",
"last": "/api/v1/resources?page=8&per_page=20"
}
}
filter[field]=value]| 연산자 | 형식 | 예시 | 설명 |
|---|---|---|---|
| 등가 | filter[field]=value | filter[status]=active | 완전 일치 |
| 이상 | filter[field][gte]=value | filter[price][gte]=1000 | 하한 |
| 이하 | filter[field][lte]=value | filter[price][lte]=5000 | 상한 |
| 부분일치 | filter[field][like]=value | filter[name][like]=kim | LIKE |
| 다중값 | filter[field]=a,b | filter[status]=active,pending | IN |
sort=field / sort=-field(내림차순)]sort=status,-created_at]-created_at(새로운 순서)]요청 예시:
GET /api/v1/resources?sort=-created_at,name&filter[status]=active&page=1&per_page=20
| 항목 | 대응 전략 | 비고 |
|---|---|---|
| COUNT 비용 | total_count 기본 미포함 | 요청 시 옵션 제공 |
| 대량 offset | Cursor 방식 기본 적용 | deep pagination 방지 |
| 인덱스 미정렬 | 허용 필드 제한 | 성능 보호 |
| 엔드포인트 | 현재 방식 | 변경 사항 | 우선순위 | 호환성 전략 |
|---|---|---|---|---|
| /users | offset 기반 | cursor 방식 도입 | P1 | 기존 파라미터 3개월 유지 |
| /orders | limit/per_page 혼용 | limit 통일 | P2 | deprecated 경고 |
## 안전 유의사항
- 문서 작성만 수행하고 구현 변경은 하지 않는다.
- SQL 인젝션 위험 패턴 발견 시 반드시 경고한다.
- 필터 대상에 민감 정보가 포함되지 않도록 주의한다.
- 대규모 데이터 전량 반환 가능 구조는 반드시 지적한다.
- total_count 계산이 성능에 미치는 영향 명시한다.
---
## 종료 조건
위 형식에 따른 표준 규격서를 출력하면 종료한다.
페이지네이션·필터링·정렬 규칙이 명확히 정의되어 있고, 현행 구현과의 차이 및 이행 계획이 포함되어야 한다.
실제 코드 수정은 사용자 지시를 기다린다.