docs: Admin 로그인 API 라우팅 문제 해결 내용 추가

This commit is contained in:
happybell80 2025-11-17 19:31:57 +09:00
parent 2700c121d2
commit 57ee154c8d

View File

@ -199,3 +199,48 @@ curl -I http://localhost/admin/ # HTTP/1.1 200 OK
- IDE 터미널 문제 발생 시 가장 먼저 IDE 재시작 시도 - IDE 터미널 문제 발생 시 가장 먼저 IDE 재시작 시도
- 재시작으로 해결되지 않으면 shell 경로 확인 (`/bin/bash`) - 재시작으로 해결되지 않으면 shell 경로 확인 (`/bin/bash`)
### Admin 로그인 API 라우팅 문제 해결
**문제**: `/admin/api/login` POST 요청 시 404 오류 발생
**원인**:
1. **프론트엔드 JavaScript 실행 문제**: 폼 제출 시 POST 요청이 발생하지 않고 GET 요청으로 처리됨
2. **Gateway 라우팅 문제**: Gateway 컨테이너에서 `localhost:8000`으로 접근 시 자기 자신을 가리킴
3. **Docker 네트워크 문제**: 컨테이너 간 통신은 컨테이너 이름 또는 Docker 네트워크 IP 사용 필요
**해결**:
1. **프론트엔드 JavaScript 수정** (`admin-dashboard/frontend/index.html`):
- form 태그에 `method="POST"``action="javascript:void(0);"` 추가
- JavaScript 이벤트 리스너를 IIFE로 감싸서 확실히 실행되도록 수정
- 에러 처리 개선 (showError 함수 의존성 제거)
2. **Gateway 라우팅 수정** (`robeing-gateway/app/routers/admin.py`):
```python
# Before: ADMIN_BACKEND_URL = "http://localhost:8000"
# After:
ADMIN_BACKEND_URL = "http://admin-dashboard-backend:8000"
```
- Docker 컨테이너 내부에서는 `localhost` 대신 컨테이너 이름 사용
- 같은 Docker 네트워크(`appnet`)에 있는 컨테이너는 이름으로 접근 가능
3. **Gateway 라우터 등록 확인** (`robeing-gateway/app/main.py`):
```python
app.include_router(admin.router, prefix="")
```
- admin router에 prefix가 없으므로 main.py에서도 prefix="" 명시
**검증**:
```bash
curl -X POST http://localhost:8100/admin/api/login \
-H "Content-Type: application/json" \
-d '{"password":"19800508"}'
# {"access_token":"...", "token_type":"bearer"}
```
**교훈**:
- Docker 컨테이너 간 통신은 `localhost`가 아닌 컨테이너 이름 또는 네트워크 IP 사용
- 같은 Docker 네트워크에 있는 컨테이너는 이름으로 자동 DNS 해석됨
- 프론트엔드 JavaScript는 브라우저 환경에서 실행되므로 상대 경로(`/admin/api/login`) 사용 가능
- Gateway는 nginx를 통해 프록시되므로 nginx 설정(`/admin/api/` → Gateway) 확인 필요