본문 바로가기

FastAPI

(30)
RDB 연동 - 2 RDB 연동 - 1 (tistory.com) RDB 연동 - 1 RDB는 관계형 데이터 베이스의 약어입니다. 전통적으로 많이 사용하는 DBMS입니다. 즉, 데이터 베이스라고 합니다. python에서 DB 즉, 데이터 베이스를 다루기 위해서는 ORM(Object Relation Mapper)라는 것 kbgw2001.tistory.com RDB 연동 - 1에서의 설정을 완료했다면, RDB와 연결할 database.py 코드를 아래와 같이 작성합니다. from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker engine = crea..
RDB 연동 - 1 RDB는 관계형 데이터 베이스의 약어입니다. 전통적으로 많이 사용하는 DBMS입니다. 즉, 데이터 베이스라고 합니다. python에서 DB 즉, 데이터 베이스를 다루기 위해서는 ORM(Object Relation Mapper)라는 것을 사용하게 됩니다. ORM은 객체와 관계를 매핑해주는 프로그램이라 생각하면 됩니다. ORM 중에서 python에서는 SQLAlchemy를 사용합니다. 파일 구조를 다음과 같이 Setting했습니다. app이라는 폴더에 database.py와 main.py, schemas.py, models.py 4개의 python 스크립트 파일들로 구성되어져 있습니다. app ├── database.py ├── main.py ├── schemas.py └── models.py 각 .py 파..
헤더, 쿠키 매개변수 헤더/쿠키 매개변수는 앞서 배운 매개변수들과는 다른 점이 있습니다. 이 매개변수를 다루기 위해서는 반드시 Header, Cookie 클래스를 사용해야합니다. 머전 쿠키를 테스트 해보겠습니다. 쿠키 가져오기 위한 코드를 다음과 같이 작성해주세요 !! import uvicorn from fastapi import FastAPI, Cookie app = FastAPI() @app.get("/cookie") def get_cookies(ga: str = Cookie(None)): return {"ga": ga} if __name__ == "__main__": uvicorn.run("main:app", reload = True) 쿠키는 사이트에 정보를 수집하기 위해서 많이 사용하는 프로그램들입니다. 위의 코드에서..
FastAPI 데이터 검증 FastAPI의 장점 중 하나는 데이터의 검증을 자동으로 해준다는 점입니다. 함수를 정의할 때, 각 매개변수가 경로 매개변수인지 아니면 쿼리 매개변수 인지를 명시하지 않았었습니다. 따로 명시하지 않았던 이유는 FastAPI에서 자동으로 인지했기 때문입니다. 하지만, Path(), Query() 함수를 사용하면, 매개변수를 명시적으로 정의 할 수 있고, 다양한 옵션을 추가 할 수 있습니다. Path와 Query는 Params 클래스의 서브 클래스입니다. 아래와 같이 main.py를 작성: import uvicorn from typing import List from fastapi import FastAPI, Query, Path from pydantic import BaseModel, parse_obj_a..
응답모델 - 2 응답모델1에서는 사용자의 비밀번호를 그대로 보여주는 문제가 있었습니다. 그래서 해당 사용자의 비밀번호를 그대로 보여주는 문제를 해결하기 위한 간단한 방법이 Class를 나누는 것입니다. 다음과 같이 main.py를 작성해 봅시다. import uvicorn from fastapi import FastAPI from pydantic import BaseModel, HttpUrl app = FastAPI() class CreateUser(BaseModel): name: str password: str avatar_url: HttpUrl = "https://icotar.com/avatar/fastcampus.png?s=200" class GetUser(BaseModel): name: str avatar_url..
응답모델 - 1 데코레이터 메소드의 매개변수 입력을 어떻게 주어야 하는지도 중요하지만, 실제 API를 호출해보기 전에 응답이 어떻게 오는지 확인하면 더 좋습니다. 다음과 같이 main.py 파일 작성해봅시다 !! import uvicorn from typing import Optional from fastapi import FastAPI from pydantic import BaseModel, HttpUrl app = FastAPI() class User(BaseModel): name: str password: str avatar_url: Optional[HttpUrl] = None @app.get("/users/me", response_model=User) def get_user(user: User): return u..
FastAPI 요청 본문(Request body) POST, PUT, PATCH 등의 메소드를 사용하는 경우에 HTTP 본문(body)를 많이 활용합니다. 단순히 텍스트나 XML도 보낼수 있지만 요즘은 JSON을 더 많이 사용하는 것 같습니다. 우선 pydantic으로 요청 본문을 받아 보겠습니다. main.py에 다음과 같이 코드를 작성해하면 pydantic으로 요청 본문을 구현할 수 있습니다. import uvicorn from typing import Optional from fastapi import FastAPI from pydantic import BaseModel, HttpUrl app = FastAPI() class User(BaseModel): name: str password: str avatar_url: Optional[HttpUrl..
문자열 열거형의 등장 파이썬도 다른 언어들 처럼 열거체를 지원합니다. 그리고 다중 상속도 지원합니다. main.py에 다음과 같이 코드를 작성합니다. from enum import Enum from fastapi import FastAPI import uvicorn app = FastAPI() class UserLevel(str, Enum): a = "a" b = "b" c = "c" @app.get("/users") def get_users(grade: UserLevel): return {"grade": grade} if __name__ == '__main__': uvicorn.run("main:app", reload=True) 위와 같이 작성하면, 반드시 grade 매개변수는 a, b, c 중 하나여야 합니다. 만약에 다..