본문 바로가기

FastAPI

[FastAPI] 내가 보려고 정리하는 FastAPI (conda)

0. fastapi란?

python의 웹 프레임워크
이름 그대로 API를 구축하기 위해 사용함
프레임 워크를 사용하면 보다 효율적으로 개발이 가능함 (틀을 제공해 주기 때문)

*python 3.7 이상부터 사용 가능

 

1. 가상환경 만들기

venv를 사용해도 되고 conda를 사용해도 되는데 여기에서는 conda를 사용하겠습니다.
먼저 터미널에 아래 명령어를 입력합니다.

conda create -n 가상환경이름 python=3.8

 
뭐가 짜르르 많이 나오는데요
y 입력 후 엔터
y 입력 후 엔터
총 2번 하세요!
 
그 다음에 입력창이 또 뜨면 아래 코드를 입력합니다.

conda activate 가상환경이름

 
이걸 입력하고 나서 왼쪽에 (가상환경이름) 이렇게 뜨면 가상환경에 진입을 성공한 것!
 
 

2. FastAPI 설치하기

마찬가지로 아까 그 터미널에 아래 명령어 작성해 주세요.

pip install fastapi
pip install "uvicorn[standard]"


 
이제 vscode에 들어가서 폴더를 열어 봅시다.
사진 없는 빈약한 티스토리인 점 ㅈㅅ해요
 
폴더를 열어서 new file 클릭 - python 파일을 생성합니다.
저는 폴더 이름은 fastapi_test_conda, 파일 이름은 main.py로 했습니다.
 
 
*중요
아까 우리가 만든 가상환경 이름으로 저 말풍선 부분을 바꿔 줘야 해요!!!

 
이렇게 바꾸고 나서 new Terminal에서 cmd를 열면

 
맨 왼쪽에 괄호 보이죠? 가상환경 진입에 성공했습니다!

 

3. FastAPI 외부 파일 연결하기

이제 설치는 끝났으니 html 폴더(templates)를 연결하겠습니다.
이걸 연결하기 위한 패키지는 jinja2
 
가상환경이 켜져 있는 상태에서 터미널에 아래 코드를 입력해 주세요.

pip install jinja2

 
 
아래 코드는 FastAPI의 가장 기본적인 코드 구조라고 생각하면 됩니다!

from fastapi import FastAPI #import: API에 대한 모든 기능을 제공하는 FastAPI의 class
app = FastAPI() // FastAPI # 인스턴스 생성

@app.get("/") #경로 동작 생성, '/'이 경로를 의미
async def root(): 
	return {"message": "Hello World!"}

 
갑자기 어지럽죠? (ㅠㅠ)
질문 정리 타임을 가집시다
 
1. @(데코레이터): @ 아래에 있는 함수를 받아서 동작을 시행함
즉, 위 코드의 경우 경로(/)에 해당되는 get 동작을 시행
 
 
2. 동작: 동작이란 http의 메소드 중 하나
 동작의 종류는 크게 4가지 정도만 알아 두면 될걸요?... 아마도

post데이터 생성
get데이터 읽기
put데이터 업데이트
delete데이터 삭제

 
3. async def(비동기 함수): 함수 완료 여부와 상관없이 호출자에게 값을 리턴, 작업이 완료되면 호출자에게 완료되었다고 통보함.
=> 함수가 리턴되었다: 함수 실행이 완료됐을 수도 있고(완료 통보)~ 아닐수도 있고~

 
 

4. return: 콘텐츠를 반환하여 값을 우리 눈에 보이도록 해 주는 역할
참고로 반환 가능한 자료형은 단일값을 가진 str, int 등이 있습니다.
 
 
 

이제 코드 설명은 다 들었으니 실행을 해 보아요

uvicorn 파일이름:app --reload


위 코드를 터미널에 입력하면 http://127.0.0.1:8000라는 주소가 뜰 텐데, 이게 서버를 실행한 것입니다.
여기에 ctrl+클릭하여 들어가서 보면 return에 들어 있는 {"message": Hello World"}가 화면에 반환되어 있으면 성공입니다.
 
축하드립니다... 님은 FastAPI를 정복하셨어요 (아님)
 
 
복습 겸으로 티스토리 쓰는 게 도움이 많이 된다고 해서 처음 써 봤는데 재미있군요 ㅎ.ㅎ
확실히 설명하는 입장이 되니까 이해를 해야만 쓸 수 있는 점이 좋은 것 같아요
 
다음 내용은 register, login, logout을 정리해서 오겠습니다... 컨티뉴