31강 질문: /docs에 read_all_users 관련
31강에서 구현된 users.py의 read_all_users는 화면에 구현이 안되는 것이 맞는 것인가요? Users의 POST /users 밑에 GET /users/all로 있어야 할 것 같은데...
===> PC를 재시작 후 다시 서버를 실행해 보니 나타납니다.

DB Browser에서 특정 User의 is_admin을 true로 수정하고 저장까지 완료하고 난 후, 각각의 User들로 로그인해보았습니다. 그런데, is_admin이 false인 모든 User들도 read_all_users의 endpoint인 /users/all에서 모든 회원들의 리스트가 조회가 됩니다.

/docs 페이지라서 그런 것인지 아니면 잘못 구현된 것인지 궁금합니다. 강의에서는 docs에서의 이런 상황에 대한 언급이 없어 질문을 드립니다.
回答 3
1
이 질문에 대한 최종답변을 기다리고 있습니다. 일반 회원들도 모든 user들의 리스트를 볼 수 있습니다. is_admin이 true인 관리자만 read_all_users가 실행되어야 맞을 것 같은데 말입니다. 답변 부탁드립니다.
0
안녕하세요, 강사 해여입니다.
먼저 문제 원인 분석을 위해 다음의 과정을 진행해보시겠어요?
1. /docs 페이지로 이동합니다.
2. 오른쪽 상단의 Authorize 버튼을 클릭합니다.
3. 만약 이미 로그인이 되어 있다면, Logout 버튼을 눌러 로그아웃합니다.
4. (가장 중요!) 팝업 창을 닫고, 웹 브라우저 페이지를 강력 새로고침(Hard Refresh) 합니다.
Mac: Cmd + Shift + R
Windows/Linux: Ctrl + Shift + R * 이렇게 하면 브라우저에 남아있을 수 있는 모든 캐시와 인증 상태가 완전히 초기화됩니다.
5. 다시 Authorize 버튼을 누르고, is_admin=false인 일반 사용자의 정보로 로그인합니다. 6. 이제 /users/all 엔드포인트를 실행(Execute)해 보세요.
0
말씀하신데로 강력 새로고침 시행하고 is_admin=false인 일반 사용자의 정보로 로그인 했지만 여전히 모든 users가 보입니다. 원인을 찾을 수가 없네요..
희한합니다. 분명히 DB Browser상에는 is_admin=false인 일반 사용자로 로그인을 했는데, async def require_admin을 타고 들어간 곳에 print함수를 이용해서 current_user.is_admin을 찍어 봣더니 True인 겁니다. 희한 합니다. 마법이 일어나버렸습니다.
강력 새로고침 뿐만아니라, PC를 재시작하고 난 후에도 동일하게 나옵니다. 희한합니다. 참으로....
1
하... 찾았습니다. 원인을...DB Browser에서 true를 1로, false를 0으로 바꾸고 저장하고 테스트를 해봣더니... 제대로 됩니다. 허허허, 아마도 false를 문자열로 인식해서 이쓰니 True로 출력이 되었나 봅니다.
그리고, sql_models/user.py의 class User(Base):에서 is_admin부분의 default=False를 default=0으로 수정했습니다. user생성때부터 0으로 되게....
is_admin: Mapped[bool] = mapped_column(Boolean, default=0, server_default='false', nullable=False)
0
안녕하세요, 인프런 AI 인턴입니다. moljin님.
read_all_users 함수가 Swagger UI (/docs) 화면에 표기되지 않는 문제에 대해 질문해주셨군요. 일반적으로 FastAPI에서 엔드포인트가 /docs에 나타나지 않는 경우는 몇 가지 이유가 있을 수 있습니다.
@app.get 데코레이터 확인:
read_all_users함수에 데코레이터가 제대로 설정되어 있는지 확인해주세요. 예를 들어,@app.get("/users/all")와 같이 설정해야 해당 엔드포인트가 자동으로 문서화됩니다.라우팅 문제: users.py 파일에서 FastAPI 인스턴스에 포함되어 있는지, 그리고 해당 파일이 FastAPI 애플리케이션의 라우팅 설정에 제대로 연결되었는지도 확인이 필요합니다.
include_router를 통해 모듈이 적절히 등록되어 있어야 합니다.오류 로그 확인: 코드 실행 중 오류가 발생해 엔드포인트 등록이 완료되지 않았을 가능성도 있습니다. 콘솔 오류 로그를 확인해 보세요.
관련 문제를 논의한 게시물이 아래에 있으므로, 이와 관련된 더 많은 정보나 솔루션을 참고하실 수 있습니다:
- FastAPI 엔드포인트가 /docs에 나타나지 않는 문제
위 링크를 통해 다른 수강생들의 경험담이나 해결 방법을 참조하실 수 있습니다. 특히 Swagger UI에 대한 설정 및 엔드포인트 선언에 관한 기본 개념을 반복적으로 점검하는 것이 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수강평 이벤트
0
6
1
패키지 구분에 대해 궁금한게 있습니다
0
4
1
순위가 동률일 때의 처리에 대해 질문드립니다.
0
6
1
작업형 1 (삭제예정, 구 버전)
0
26
2
강의노트는 어디있나요?
0
10
0
노션 학습 자료 권한 요청
0
10
1
수강기간 연장 문의드립니다.
0
16
1
2유형 레이블 인코딩 VS 원핫 인코딩
0
19
3
part2강의 문의사항입니다.
0
15
2
iam 권한
0
13
1
수강기간 연장 문의드립니다.
0
26
1
인덱스 슬라이싱
0
26
2
github 소스코드
0
95
2
강의자료 링크로 들어가면 페이지를 찾지못한다고 나와요
1
95
2
CRUD관련: async def get_db() 관련
0
122
2
34강 강의 마지막에 나오는 35강 websocket 관련 강의 관련 질문
1
93
1
Docker와 AWS 배포 강의 관련
0
88
2
15강 수정 요청: DOWNLOAD_DIR 확인 구문 부분
0
67
2
30강 질문: 토큰생성 관련
1
101
2
26강 에러발생: 해결방법 알려주세요.
0
139
3
25강에서 에러발생: 해결방법 알려주세요
0
159
3
13강 DeleteUserCookie 함수
1
99
4
안녕하세요 강의자료 문의입니다.
1
121
2
FASTAPI 소개와 핵심 특징 강의 내용에서 화면이 멈춰있습니다.
1
154
2

