Hono REST API 서버의 라우트 추가, 수정, 에러 핸들링, 인증 미들웨어 등
API 서버 관련 작업이면 반드시 이 스킬을 먼저 확인할 것.
Triggers: "API 라우트 추가", "Hono 엔드포인트", "서버 에러",
"REST API", "라우트 패턴", "API 응답 형식", "서버 포트",
"API 인증", "API key", "CORS", "미들웨어", "health check",
"split reject", "split 반려", "백업 API", "프롬프트 API",
"시스템 프롬프트 API", "서버 구조", "라우트 등록".
Covers the Hono REST API server, route patterns, authentication,
error handling, and all API endpoints.
분할 히스토리 목록 (페이지네이션, 필터: deckName, status, startDate, endDate)
GET
/api/history/sync/health
히스토리 동기화 상태
GET
/api/history/:sessionId
세션 상세 조회
Media
Method
Path
설명
GET
/api/media/:filename
Anki 미디어 파일 프록시 (Base64 디코딩, MIME 자동 감지, 24시간 캐시)
Prompts -- managing-prompts 스킬 참조
Method
Path
설명
GET
/api/prompts/system
원격 systemPrompt 조회
POST
/api/prompts/system
CAS 기반 systemPrompt 저장 (expectedRevision + reason 필수)
GET/POST
/api/prompts/versions
버전 목록/생성
GET/PUT/DELETE
/api/prompts/versions/:id
버전 CRUD
POST
/api/prompts/versions/:id/activate
활성화
GET
/api/prompts/active
현재 활성 버전
GET/POST
/api/prompts/history
히스토리
GET
/api/prompts/versions/:id/failure-patterns
실패 패턴
GET/POST
/api/prompts/experiments
A/B 테스트 목록/생성
GET
/api/prompts/experiments/:id
실험 상세 조회
POST
/api/prompts/experiments/:id/complete
실험 완료
라우트 추가 패턴
라우트 파일은 prefix 없이 상대 경로로 정의하고, index.ts에서 prefix를 부여하는 패턴을 사용한다.
typescript
// packages/server/src/routes/new-route.ts
// 라우트 내부에서는 prefix 없이 정의
import { NotFoundError, ValidationError } from "@anki-splitter/core";
import { Hono } from "hono";
const app = new Hono();
app.get("/:id", async (c) => {
const id = c.req.param("id");
const resource = await findResource(id);
if (!resource) throw new NotFoundError(`리소스 ${id}를 찾을 수 없습니다`);
return c.json(resource);
});
export default app;
// packages/server/src/index.ts에서 prefix 부여하여 등록
import newRoute from './routes/new-route.js';
app.route('/api/new-route', newRoute);
// -> GET /api/new-route/:id 로 접근 가능
주의사항
카드 목록 API에서 텍스트 200자 제한 (성능) -> 상세 조회 별도 필요
c.json(result) 형식으로 응답 반환
에러는 throw -> 글로벌 app.onError 핸들러가 중앙 처리 (try/catch 불필요)
PUT /api/prompts/versions/:id에서 systemPrompt 필드 수정 차단 -> /api/prompts/system 전용