uvicorn (21) 썸네일형 리스트형 FastAPI - 22 (Nginx) 앞서 uvicorn과 Gunicorn을 설치한 상태로 가정하겠습니다. FastAPI - 21 (Gunicorn) Gunicorn을 설치 할 때와 비슷한 질문이 떠오르네요. Nginx가 뭔가요? 왜 설치 해야 하나요? FastAPI는 Gunicorn으로 실행하는데 Nginx와 같이 실행 할 수 있나요? Gunicorn때와 동일하게 제가 설치한 내용을 간단히 정리 했습니다. 공식 사이트 https://www.nginx.com/ Nginx 공식 문서 Nginx? Nginx는 강력한 웹 서버이자 리버스 프록시 서버로, 고성능과 효율적인 정적 콘텐츠 제공, 요청의 로드 밸런싱, SSL/TLS 암호화 등을 처리합니다. 왜 Gunicorn와 함께 사용하나요? 비동기적 처리를 하는 uviconr을 설치했고 안정성과 관.. FastAPI - 21 (Gunicorn) Gunicorn이 뭔가요? 왜 설치 해야 하나요? FastAPI는 uvicorn으로 실행하는데 Gunicorn과 같이 실행 할 수 있나요? Gunicorn을 설치 하면서 위와 같은 의문이 많이 들었습니다. 제가 설치한 내용을 간단히 정리 했습니다. 공식 사이트 Gunicorn: https://gunicorn.org/ uvicorn: https://www.uvicorn.org/ Gunicorn? uvicorn? Uvicorn과 Gunicorn은 둘 다 Python 웹 애플리케이션을 위한 서버입니다. 다만 지원하는 인터페이스와 내부 작동 방식에 차이가 있습니다. Gunicorn 인터페이스: Gunicorn은 WSGI(Web Server Gateway Interface) 애플리케이션 서버입니다. WSGI는 P.. FastAPI - 20 (APIRouter) APIRouter FastAPI 애플리케이션의 경로 작업(route operations)을 구조화하고 모듈화 합니다. 예제 코드를 작성합니다. 디레토리 및 파일 구조 . main.py └── service ├── notice ├──── notice_route.py ├── qna └──── qna_route.py notice_route.py /service/notice 경로에 대한 경로 작업을 정의합니다. # 웹 서비스의 경로(엔드포인트)를 생성 from fastapi import APIRouter # APIRouter의 인스턴스를 생성. # URL 접두어로 /service/notice를 사용 # 이 라우터에 정의된 모든 경로가 이 URL 접두어로 시작됨을 의미합니다 router = APIRouter(pr.. FastAPI - 19 (DB - PostgresSQL) 출처: https://fastapi.tiangolo.com/ko/tutorial/sql-databases// 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. SQLAlchemy와 ORM FastAPI와 PostgresSQL을 연동하겠습니다. PostgresSQL 설치는 PostgreSQL - 01 (설치 - Windows)나 PostgreSQL - 03 (설치 - ubuntu)에서 참고 하시기 바랍니다. FastAPI에서는 SQLAlchemy를 사용하여 DB를 연동 할 수 있습니다. SQLAlchemy는 ORM(Object Relational Mapper)로 DB를 객체로 다룰 수 있게 해줍니다. SQLAlchemy는 다양한 DB를 지원합니다. ORM(object-.. FastAPI - 18 (보안4 - QAuth2, Bearer, JWT - 클라이언트 구성 ) 인증서버와 인증을 요청하는 클라이언트를 각각 구성하겠습니다. 환경 구성 인증 서버 설정 인증 서버 코드 작성(main.py): 사용자 인증과 JWT 토큰 발급을 처리하는 FastAPI 애플리케이션을 작성합니다. 이 서버는 로그인 엔드포인트(/token)를 제공하고 유효한 자격 증명을 가진 사용자에게 JWT 토큰을 발급합니다. 인증 서버 실행: 인증 서버를 8000 포트에서 실행합니다. uvicorn uvicorn main:app --reload --port 8000 클라이언트 서버 설정 클라이언트 서버 코드 작성(main_client.py): 인증 서버와 다른 FastAPI 애플리케이션을 작성하여 클라이언트 서버로 사용합니다. 이 서버는 인증이 필요한 엔드포인트를 제공하며, 요청의 Authorizatio.. FastAPI - 17 (보안3 - JWT) 출처: https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. JWT란 먼저 OAuth 2.0에서 발급되는 Bearer 토큰의 형태 중 하나가 JWT입니다. JWT 정의: JWT (JSON Web Tokens)는 JSON 객체를 긴 문자열로 인코딩하는 표준입니다. 이 문자열은 공백 없이 밀집되어 있습니다. 예시 형태: JWT는 다음과 같은 형태를 가집니다: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJ.. FastAPI - 16 (보안2 - QAuth2, Bearer) 출처: https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 로그인(인증)하여 토큰 받기 이전의 코드(FastAPI - 15 (보안1 - QAuth2, Bearer))를 이용하여 추가 합니다. OAuth2PasswordRequestForm를 이용 하여 username과 password 가져옵니다. 전달 된 사용자 정보로 인증을 진행 합니다. 인증이 완료되면 토큰을 생성하여 반환 하고 그렇지 않으면 HTTPException을 발생 시킵니다. 코드 from typing import Union from fastapi import Depends, FastAPI, HTT.. FastAPI - 15 (보안1 - QAuth2, Bearer) OAuth2, Bearer란 OAuth2 OAuth 2.0을 사용하면, 계정 정보(특히 비밀번호)를 직접 공유하지 않고도 여러 서비스 간에 안전하게 로그인하고 정보를 공유할 수 있습니다. 이는 인터넷에서 개인정보를 보호하는 중요한 방법 중 하나입니다. 인터넷에서의 "키(토큰)" 우리가 인터넷에서 다양한 서비스(예: 게임, 소셜 미디어, 쇼핑 앱 등)를 사용할 때, 때때로 한 서비스(예: 구글 또는 페이스북)를 사용해서 다른 서비스에 로그인하는 경우가 있습니다. 여기서 OAuth 2.0은 하나의 서비스가 다른 서비스에 '키(토큰)'를 안전하게 전달할 수 있게 해주는 역할을 합니다. "키(토큰)" 전달 과정 권한 요청: 예를 들어, '게임 A'에 '구글 계정'으로 로그인하고 싶다고 해 봅시다. 여기서 게임 .. 이전 1 2 3 다음