API 맵

Spring 컨트롤러와 Next.js route handler 를 함께 스캔합니다. 실제 API 는 Spring 쪽이고, route handler 는 그 앞의 얇은 BFF 입니다.

서버 엔드포인트
73
Spring 컨트롤러
관리자 전용
30
경로에 /admin
BFF 라우트
26
핸들러 28개
호출되지 않음
5
앱 어디서도 안 부름
깨진 호출
0
받아 줄 곳이 없음

두 겹으로 되어 있다

Spring 서버 (api :8080 · auth :8081) 가 진짜 API 다. 데이터는 전부 여기서 나오고, DB 를 보는 곳도 여기뿐이다.

Next.js route handler 는 BFF 다. 브라우저에서 직접 불러야 하는 것(회원가입 중복확인, PG 콜백 등)만 두고, 나머지 화면은 서버 컴포넌트·서버 액션에서 Spring 을 바로 부른다. 그래서 route handler 수가 적은 게 정상이다.

아직 부르는 곳이 없는 서버 엔드포인트 (5)

서버에는 있는데 두 앱 어디에서도 경로가 안 보입니다. 아래 사유가 적힌 것은 알고 남겨 둔 것이고, 사유가 없으면 아직 조사하지 않은 것입니다.

메서드경로왜 안 쓰나
GET/api/identity/me화면은 Auth.js 세션에서 회원 정보를 읽는다. 서버를 한 번 더 부를 이유가 없다.
POST/api/identity/token/refresh액세스 토큰이 만료되면 Auth.js 가 재로그인을 태운다. 무음 갱신을 붙일 때 쓴다.
GET/api/learning/my-courses화면은 로그인 때 받은 수강권(entitlements)으로 판단한다. 목록이 따로 필요하지 않다.
GET/api/marketing/admin/snsSNS 관리 화면은 이관 대상이 아니다 — 원본에 admin/sns 디렉터리가 없다. 배너 업로드(I1)를 붙일 때 함께 정리한다.
GET/api/marketing/home홈은 배너·게시글·후기를 각각의 API 로 받는다. 한 번에 주는 이 경로는 안 쓴다.

인증 · 회원 (18)

도메인 설계 →|api :8080auth :8081AdminAccountControllerIdentityControllerAdminMemberController
메서드경로부르는 곳
GET/api/identity/admin/accounts관리자관리자 앱src/lib/misc.ts
POST/api/identity/admin/accounts/{id}/approval관리자관리자 앱src/lib/misc.ts
POST/api/identity/admin/login관리자관리자 앱src/lib/auth.ts
GET/api/identity/admin/members관리자관리자 앱src/lib/members.ts
GET/api/identity/admin/members/{id}관리자관리자 앱src/lib/members.ts
POST/api/identity/admin/members/{id}관리자관리자 앱src/lib/members.ts
GET/api/identity/admin/members/fields관리자관리자 앱src/lib/members.ts
POST/api/identity/login사용자 앱src/lib/auth.ts
POST/api/identity/logout사용자 앱src/actions/auth.ts
GET/api/identity/me없음
POST/api/identity/members사용자 앱src/app/api/identity/auth/register/route.ts
GET/api/identity/members/check-duplicate사용자 앱src/app/api/identity/auth/check-duplicate/route.ts
POST/api/identity/members/find-id사용자 앱src/app/api/identity/auth/find-id/route.ts
PATCH/api/identity/members/me/english-name사용자 앱src/actions/member-profile.ts
PATCH/api/identity/members/me/name사용자 앱src/actions/member-profile.ts
POST/api/identity/members/reset-password사용자 앱src/app/api/identity/auth/find-pw/route.ts
POST/api/identity/members/reset-password/confirm사용자 앱src/app/api/identity/auth/reset-password/route.ts
POST/api/identity/token/refresh없음

수강 · 커리큘럼 (15)

도메인 설계 →|api :8080AdminCurriculumControllerLearningController
메서드경로부르는 곳
GET/api/learning/admin/courses/{course}/units관리자관리자 앱src/lib/misc.ts
GET/api/learning/admin/members/{memberId}/progress관리자관리자 앱src/lib/members.ts
GET/api/learning/courses/{course}/curriculum사용자 앱src/lib/curriculum.ts
GET/api/learning/courses/{course}/score-report사용자 앱src/lib/exam.ts
GET/api/learning/lessons/{course}/{unit}/{lesson}사용자 앱src/lib/curriculum.ts
GET/api/learning/my-courses없음
GET/api/learning/progress사용자 앱src/actions/lecture-progress.ts, src/lib/curriculum.ts
POST/api/learning/progress사용자 앱src/actions/lecture-progress.ts, src/lib/curriculum.ts
GET/api/learning/progress/{unit}/{lesson}사용자 앱src/lib/curriculum.ts
GET/api/learning/students/me사용자 앱src/lib/student.ts
GET/api/learning/students/me/books사용자 앱src/lib/student.ts
GET/api/learning/students/me/certificate-address사용자 앱src/actions/certificate-address.ts, src/lib/student.ts
POST/api/learning/students/me/certificate-address사용자 앱src/actions/certificate-address.ts, src/lib/student.ts
GET/api/learning/students/me/entrance사용자 앱src/lib/student.ts
GET/api/learning/students/me/scan사용자 앱src/lib/student.ts

커뮤니티 (11)

도메인 설계 →|api :8080CommunityController
메서드경로부르는 곳
GET/api/community/{board}사용자 앱src/app/api/community/faqs/route.ts, src/app/api/community/notices/route.ts
GET/api/community/{board}/{id}사용자 앱 · 관리자 앱src/app/api/community/notices/[id]/route.ts, src/app/api/community/pass-notes/[id]/route.ts
GET/api/community/admin/{board}관리자관리자 앱src/lib/board.ts
POST/api/community/admin/{board}관리자관리자 앱src/lib/board.ts
DELETE/api/community/admin/{board}/{id}관리자관리자 앱src/lib/board.ts
GET/api/community/admin/{board}/{id}관리자관리자 앱src/lib/board.ts
POST/api/community/admin/{board}/{id}관리자관리자 앱src/lib/board.ts
POST/api/community/admin/{board}/{id}/visible관리자관리자 앱src/lib/board.ts
POST/api/community/admin/qna/{id}/answer관리자관리자 앱src/lib/board.ts
POST/api/community/qna사용자 앱src/app/api/community/qna/route.ts, src/app/qna/qa-list/page.tsx
GET/api/community/qna/categories사용자 앱src/app/api/community/qna/[id]/route.ts, src/app/qna/qa-list/[id]/page.tsx

마케팅 콘텐츠 (11)

도메인 설계 →|api :8080AdminApplyControllerAdminContentControllerMarketingController
메서드경로부르는 곳
GET/api/marketing/admin/applies관리자관리자 앱src/lib/applies.ts
GET/api/marketing/admin/applies/{id}관리자관리자 앱src/lib/applies.ts
POST/api/marketing/admin/applies/{id}/counseling관리자관리자 앱src/lib/applies.ts
POST/api/marketing/admin/applies/{id}/flags관리자관리자 앱src/lib/applies.ts
GET/api/marketing/admin/applies/{id}/history관리자관리자 앱src/lib/applies.ts
POST/api/marketing/admin/applies/{id}/history관리자관리자 앱src/lib/applies.ts
GET/api/marketing/admin/banners관리자관리자 앱src/lib/misc.ts
GET/api/marketing/admin/sns관리자없음
GET/api/marketing/courses/{course}/preview-videos사용자 앱src/app/api/marketing/content/tec-lab/wvc-tec/route.ts, src/app/api/marketing/content/tesol-lab/wvc-tesol/route.ts
GET/api/marketing/faqs사용자 앱src/app/api/marketing/content/tec-lab/wvc-tec/route.ts, src/app/api/marketing/content/tesol-lab/wvc-tesol/route.ts
GET/api/marketing/home없음

시험 · 평가 (9)

도메인 설계 →|api :8080AdminLevelTestControllerAssessmentControllerLevelTestController
메서드경로부르는 곳
GET/api/assessment/admin/applies/{applyId}/poll-result관리자관리자 앱src/lib/applies.ts
GET/api/assessment/admin/level-tests관리자관리자 앱src/lib/misc.ts
GET/api/assessment/exams/{course}/{unit}/{kind}사용자 앱src/lib/exam.ts
POST/api/assessment/exams/{course}/{unit}/{kind}/submit사용자 앱src/actions/exam.ts
GET/api/assessment/level-test사용자 앱src/lib/level-test.ts
POST/api/assessment/level-test/applications사용자 앱src/lib/level-test.ts
GET/api/assessment/level-test/poll사용자 앱src/lib/level-test.ts
POST/api/assessment/level-test/submissions사용자 앱src/lib/level-test.ts
GET/api/assessment/results/{course}/{unit}/{kind}사용자 앱src/lib/exam.ts

수강신청 · 결제 (7)

도메인 설계 →|api :8080CommerceController
메서드경로부르는 곳
GET/api/commerce/admin/orders관리자사용자 앱 · 관리자 앱src/lib/commerce.ts
POST/api/commerce/admin/orders/{orderNo}/amount관리자관리자 앱src/lib/commerce.ts
POST/api/commerce/admin/orders/{orderNo}/confirm관리자사용자 앱 · 관리자 앱src/lib/commerce.ts
POST/api/commerce/admin/orders/{orderNo}/refund관리자사용자 앱 · 관리자 앱src/lib/commerce.ts
POST/api/commerce/orders사용자 앱src/actions/commerce.ts
GET/api/commerce/orders/{orderNo}사용자 앱 · 관리자 앱src/lib/commerce.ts
POST/api/commerce/payments/nicepay/return사용자 앱src/app/api/commerce/nicepay/return/route.ts

상품 카탈로그 (2)

도메인 설계 →|api :8080CatalogController
메서드경로부르는 곳
GET/api/catalog/products사용자 앱src/app/api/catalog/products/route.ts, src/app/api/marketing/content/products/route.ts
GET/api/catalog/products/{code}사용자 앱src/lib/product.ts

BFF 라우트 (26)

Next.js 의 route handler 입니다. 대부분 Spring 을 그대로 넘겨 주는 얇은 층이라, 어떤 서버 엔드포인트를 부르는지 함께 봅니다.

메서드경로부르는 서버 API
사용자GET/api/assets/[...path]— (서버를 부르지 않음)82
관리자GETPOST/api/auth/[...nextauth]— (서버를 부르지 않음)4
사용자GET/api/catalog/products— (서버를 부르지 않음)12
사용자POST/api/commerce/nicepay/return/api/commerce/payments/nicepay/return45
사용자GET/api/community/faqs/api/community/faq17
사용자GET/api/community/notices/api/community/notice17
사용자GET/api/community/notices/[id]/api/community/notice/${id}14
사용자GET/api/community/pass-notes/api/community/pass-note17
사용자GET/api/community/pass-notes/[id]/api/community/pass-note/${id}14
사용자GET/api/community/qna— (서버를 부르지 않음)17
사용자GET/api/community/qna/[id]— (서버를 부르지 않음)14
사용자GETPOST/api/identity/auth/[...nextauth]— (서버를 부르지 않음)4
사용자GET/api/identity/auth/check-duplicate/api/identity/members/check-duplicate15
사용자POST/api/identity/auth/find-id/api/identity/members/find-id19
사용자POST/api/identity/auth/find-pw/api/identity/members/reset-password42
사용자POST/api/identity/auth/register/api/identity/members19
사용자POST/api/identity/auth/reset-password/api/identity/members/reset-password/confirm34
사용자GET/api/learning/books— (서버를 부르지 않음)20
사용자GET/api/learning/entrance— (서버를 부르지 않음)11
사용자GET/api/learning/scan— (서버를 부르지 않음)11
사용자GET/api/marketing/content/products/api/catalog/products41
사용자GET/api/marketing/content/review/sty-list/api/community/review12
사용자GET/api/marketing/content/tec-lab/wvc-tec/api/marketing/courses/TEC/preview-videos/api/marketing/faqs37
사용자GET/api/marketing/content/tesol-lab/level-test— (서버를 부르지 않음)7
사용자GET/api/marketing/content/tesol-lab/wvc-tesol/api/community/pass-note/api/marketing/courses/TESOL/preview-videos/api/marketing/faqs55
사용자GET/api/marketing/content/university/about-wvc— (서버를 부르지 않음)7