[FAST API] FAST API란? (+ 설치방법)

군자·2024년 4월 1일

FASTAPI

목록 보기
1/4
post-thumbnail

출처

https://lsjsj92.tistory.com/648
https://fastapi.tiangolo.com/ko/


📌 FAST API란?


라고 공식홈페이지에 적혀있다.

결과적으로는 파이썬 환경에서 빠른(이름처럼) API를 지원해준다는건데,,

이 장점 때문에 머신러닝, 혹은 딥러닝 모델 배포에 많이 쓰인다. 그리고 나도 그럴 용도로 FAST API에 입문중이다.

🔍 FAST API 설치

터미널에서 아래 명령어를 실행하면, fast API와 그와 관련된 라이브러리까지 모두 설치가 된다.

pip install "fastapi[all]"

🔍 굉장히 간단한 실습

  • 우선 main.py 이름으로 새 파일을 하나 만들고, fast api 공식 홈페이지에 있는 코드를 실행해본다.
from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}
  • 그리고 터미널에 uvicorn main:app --reaload 를 입력하면!!
    이때, 파일명을 main으로 하지 않고 다른 이름으로 했다면 해당 이름으로 바꿔주어야 함!
  • 당연히! 파일 경로로 이동한 후 실행해야한다. 안그럼 오류뜸

http://127.0.0.1:8000 해당 링크로 접속 시에 아래의 화면이 나타난다.

코드를 확인해보면

@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

이부분이 있다.
API를 조금이라도 아시는 분들이라면 바로 생각이 가능할것. 당장 링크를 수정해보자

http://127.0.0.1:8000/item/3 으로 접속해본 결과이다

근데 이렇게 되면,, 왜 q가 null값이 들어가나 싶을거다(일단 난 초보라 궁금했다 ㅜ)

http://127.0.0.1:8000/items/3?q=cookie 이렇게 접속해보면 값이 제대로 잘 들어간다!

http://127.0.0.1:8000/docs 이 링크로 접속하면 swagger도 볼 수 있다!

++++추가실습

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

위의 코드에서 이 코드만 추가하면 swagger에서 put도 실습 가능하다! 기본적인 사용법은 유사한듯

📌 결론

FAST API가 할 수 있는 것(공식문서 참고)

  • GET 및 PUT 요청에 item_id가 경로에 있는지 검증.
  • GET 및 PUT 요청에 item_id가 int 타입인지 검증.
  • GET 요청에 q라는 선택적인 쿼리 매개변수가 검사(http://127.0.0.1:8000/items/foo?q=somequery처럼).
    - q 매개변수는 = None으로 선언되었기 때문에 선택사항입니다.
    - None이 없다면 필수사항입니다(PUT의 경우와 마찬가지로).
  • /items/{item_id}으로의 PUT 요청은 본문을 JSON으로 읽음:
    - name을 필수 속성으로 갖고 str 형인지 검사.
    - price을 필수 속성으로 갖고 float 형인지 검사.
    - 만약 주어진다면, is_offer를 선택 속성으로 갖고 bool 형인지 검사.
    - 이 모든 것은 깊이 중첩된 JSON 객체에도 적용됩니다.
  • JSON을 변환하거나 JSON으로 변환하는 것을 자동화.

  • 다음에서 사용할 수 있는 모든 것을 OpenAPI로 문서화:
    - 대화형 문서 시스템.
    - 여러 언어들에 대한 자동 클라이언트 코드 생성 시스템.
  • 2개의 대화형 문서 웹 인터페이스를 직접 제공.
profile
헬로 아이엠군자. 굿투씨유

0개의 댓글