inflearn logo
강의

講義

知識共有

FastAPI: Pythonで3倍速く、2倍正確な、10倍速いAPI作り

31강 질문: /docs에 read_all_users 관련

解決済みの質問

95

moljin

投稿した質問数 14

1

31강에서 구현된 users.py의 read_all_users는 화면에 구현이 안되는 것이 맞는 것인가요? Users의 POST /users 밑에 GET /users/all로 있어야 할 것 같은데...

===> PC를 재시작 후 다시 서버를 실행해 보니 나타납니다.

image.png

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

image.png

/docs 페이지라서 그런 것인지 아니면 잘못 구현된 것인지 궁금합니다. 강의에서는 docs에서의 이런 상황에 대한 언급이 없어 질문을 드립니다.

python aws docker sqlalchemy FastAPI

回答 3

1

moljin

이 질문에 대한 최종답변을 기다리고 있습니다. 일반 회원들도 모든 user들의 리스트를 볼 수 있습니다. is_admin이 true인 관리자만 read_all_users가 실행되어야 맞을 것 같은데 말입니다. 답변 부탁드립니다.

0

haeyeomiso

안녕하세요, 강사 해여입니다.

먼저 문제 원인 분석을 위해 다음의 과정을 진행해보시겠어요?

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

moljin

말씀하신데로 강력 새로고침 시행하고 is_admin=false인 일반 사용자의 정보로 로그인 했지만 여전히 모든 users가 보입니다. 원인을 찾을 수가 없네요..

희한합니다. 분명히 DB Browser상에는 is_admin=false인 일반 사용자로 로그인을 했는데, async def require_admin을 타고 들어간 곳에 print함수를 이용해서 current_user.is_admin을 찍어 봣더니 True인 겁니다. 희한 합니다. 마법이 일어나버렸습니다.

강력 새로고침 뿐만아니라, PC를 재시작하고 난 후에도 동일하게 나옵니다. 희한합니다. 참으로....

1

moljin

하... 찾았습니다. 원인을...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

haeyeomiso

🙂

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. moljin님.

read_all_users 함수가 Swagger UI (/docs) 화면에 표기되지 않는 문제에 대해 질문해주셨군요. 일반적으로 FastAPI에서 엔드포인트가 /docs에 나타나지 않는 경우는 몇 가지 이유가 있을 수 있습니다.

  1. @app.get 데코레이터 확인: read_all_users 함수에 데코레이터가 제대로 설정되어 있는지 확인해주세요. 예를 들어, @app.get("/users/all")와 같이 설정해야 해당 엔드포인트가 자동으로 문서화됩니다.

  2. 라우팅 문제: users.py 파일에서 FastAPI 인스턴스에 포함되어 있는지, 그리고 해당 파일이 FastAPI 애플리케이션의 라우팅 설정에 제대로 연결되었는지도 확인이 필요합니다. include_router를 통해 모듈이 적절히 등록되어 있어야 합니다.

  3. 오류 로그 확인: 코드 실행 중 오류가 발생해 엔드포인트 등록이 완료되지 않았을 가능성도 있습니다. 콘솔 오류 로그를 확인해 보세요.

관련 문제를 논의한 게시물이 아래에 있으므로, 이와 관련된 더 많은 정보나 솔루션을 참고하실 수 있습니다:
- FastAPI 엔드포인트가 /docs에 나타나지 않는 문제

위 링크를 통해 다른 수강생들의 경험담이나 해결 방법을 참조하실 수 있습니다. 특히 Swagger UI에 대한 설정 및 엔드포인트 선언에 관한 기본 개념을 반복적으로 점검하는 것이 큰 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

순위가 동률일 때의 처리에 대해 질문드립니다.

0

2

1

작업형 1 (삭제예정, 구 버전)

0

22

1

강의노트는 어디있나요?

0

10

0

노션 학습 자료 권한 요청

0

10

1

수강기간 연장 문의드립니다.

0

16

1

2유형 레이블 인코딩 VS 원핫 인코딩

0

18

3

part2강의 문의사항입니다.

0

14

2

iam 권한

0

12

1

수강기간 연장 문의드립니다.

0

26

1

인덱스 슬라이싱

0

25

2

수강기간 연장 가능하실까요?

0

20

2

코드를 첨부해야하는 이유가 있나요?

0

20

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