본문 바로가기

웹 프레임워크/FastAPI

(23)
FastAPI - 15 (보안1 - QAuth2, Bearer) OAuth2, Bearer란 OAuth2 OAuth 2.0을 사용하면, 계정 정보(특히 비밀번호)를 직접 공유하지 않고도 여러 서비스 간에 안전하게 로그인하고 정보를 공유할 수 있습니다. 이는 인터넷에서 개인정보를 보호하는 중요한 방법 중 하나입니다. 인터넷에서의 "키(토큰)" 우리가 인터넷에서 다양한 서비스(예: 게임, 소셜 미디어, 쇼핑 앱 등)를 사용할 때, 때때로 한 서비스(예: 구글 또는 페이스북)를 사용해서 다른 서비스에 로그인하는 경우가 있습니다. 여기서 OAuth 2.0은 하나의 서비스가 다른 서비스에 '키(토큰)'를 안전하게 전달할 수 있게 해주는 역할을 합니다. "키(토큰)" 전달 과정 권한 요청: 예를 들어, '게임 A'에 '구글 계정'으로 로그인하고 싶다고 해 봅시다. 여기서 게임 ..
FastAPI - 14 (의존성 주입) 출처: https://fastapi.tiangolo.com/ko/tutorial/dependencies/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 의존성 주입(Dependency Injection) 의존성 주입은 객체가 필요로 하는 외부 리소스(의존성)를 객체 자체가 아닌 외부에서 제공하는 디자인 패턴입니다. FastAPI에서는 이 패턴을 사용하여 다양한 작업(예: 사용자 인증, 데이터베이스 연결, 설정 로드)을 처리합니다. 다시 말해 반복적인 작업을 정의하고 그것을 의존성 주입을 이용하여 사용하는 것 입니다. Depends FastAPI의 의존성 주입은 Depends를 사용합니다. 예시 코드를 통해 살펴 보겠습니다. from typing import Uni..
FastAPI - 13 (JSON 호환 인코더 / 본문 업데이트) jsonable_encoder 출처: https://fastapi.tiangolo.com/tutorial/encoder/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. jsonable_encoder는 pydantic의 BaseModel을 JSON 호환으로 변환하는 함수 입니다. JSON 호환 가능 유형은 dict, list 등이 있습니다. 예시 코드 - jsonable_encoder 사용자가 입력된 값을 Item 모델의 인스턴스로 생성하고 jsonable_encoder를 이용 하여 dict 유형으로 변환 합니다. from datetime import datetime from typing import Union from fastapi import FastAPI fr..
FastAPI - 12 (파일 업로드 / 파일 다운로드) 업로드 된 파일 저장 예시 코드 from fastapi import FastAPI, UploadFile, File, Form from fastapi.responses import HTMLResponse import shutil import os app = FastAPI() os.makedirs("uploads", exist_ok=True) @app.get("/", response_class=HTMLResponse) async def get_upload_form(): return """ Upload File with Extra Fields """ @app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...), item_..
FastAPI - 11 (파일 요청 / 폼과 파일 요청) 출처: https://fastapi.tiangolo.com/tutorial/request-files/ 출처: https://fastapi.tiangolo.com/tutorial/request-forms-and-files/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. File, UploadFile fastapi는 파일 요청을 처리 하기 위해 File과 UploadFile을 제공합니다. 클라이언트에서 업로드 한 파일을 받기 위해서는 python-multipart가 필요합니다. pip install python-multipart로 설치 할 수 있습니다. # File과 UploadFile import from fastapi import FastAPI, File, Upl..
FastAPI - 10 (폼 데이터 - Form Data) 출처: https://fastapi.tiangolo.com/tutorial/request-forms/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 폼 데이터 fastapi는 폼 데이터를 처리 하기 위해 Form을 제공합니다. from fastapi import FastAPI, Form # Form import from typing_extensions import Annotated app = FastAPI() @app.post("/login/") # username: Annotated[str, Form()] -> Form, Annotated를 사용하여 username을 폼 데이터로 지정 # password: Annotated[str, Form()] -> Form,..
FastAPI - 09 (응답 상태 코드 - Response Status Code) 출처: https://fastapi.tiangolo.com/tutorial/response-status-code/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 응답 상태 코드 status_code 매개변수를 사용하여 응답에 대한 HTTP 상태 코드를 선언할 수 있습니다. from fastapi import FastAPI app = FastAPI() # status_code 매개변수를 사용하여 응답에 대한 HTTP 상태 코드를 선언 @app.post("/items/", status_code=201) async def create_item(name: str): return {"name": name} 테스트 - python 코드 import requests def t..
FastAPI - 08 (응답 모델: Response Model) 출처: https://fastapi.tiangolo.com/tutorial/response-model/ 아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다. 응답 모델 - Return Type 반환 되는 유형을 지정 하는 방법에 대한 예시 입니다. 함수 Return Type에 반환 유형 주석 사용 from typing import List, Union from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str description: Union[str, None] = None price: float tax: Union[float, None]..