docs: Admin 로그인 API 라우팅 문제 해결 내용 추가
This commit is contained in:
parent
2700c121d2
commit
57ee154c8d
@ -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) 확인 필요
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user