IT 공부/FastAPI

[FastAPI] 로컬 서버 만들기

unnimm 2023. 6. 28. 13:21

(전 피드 보고 오기)

 

1. main.py에 해당 코드 입력

# 1. FastAPI클래스 가져옴
from fastapi import FastAPI

# 2. 인스턴스 생성
app = FastAPI() 

# 3. 경로 동작 생성 
@app.get("/")
def Index():
	return {"message" : "Helloword"}

(1) FastAPI 클래스 가져옴

from fastapi import FastAPI

(해석) -> FastAPI 클래스를 불러왔음

FastAPI는 API의 모든 기능을 제공하는 파이썬 클래스임.

 

(2) 인스턴스 생성

app = FastAPI()

(해석) -> FastAPI()로 인스턴스 생성

app 변수는 FastAPI 클래스의 "인스턴스"가 된다.

 

(3) 경로 동작 생성

경로

ex1)http://127.0.0.1:8000/docs

이런 경로가 있다면

/이후가 경로가 된다.

즉 docs가 경로

 

ex2) https://example.com /items/foo

이런 경로가 있다면

/items/foo가 경로가 된다.

 

동작

HTTP "메소드" 중 하나를 의미

 

HTTP 메소드

- post : 데이터 생성

- get : 데이터 가져옴(읽기)

- put : 데이터 업데이트

- delete : 데이터 삭제

 

HTTP 프로토콜에서는 이러한 "메소드"를 하나(또는 이상) 사용하여 각 경로와 통신할 수 있다.

이러한 메소드 들을 동작이라 부른다.

 

@app.get("/") <-경로 동작 데코레이터(@)

@app.get("/") FastAPI에게 바로 아래에 있는 함수(idex)가 다음으로 이동하는(/) 요청을 처리한다(get으로)는 것을 알려준다.

쉽게 말해서 -> @(데코레이터)왈 : 경로 / 요청이 들어올 때마다 get(읽어주는)동작을 해주는 index함수를 실행시켜줘 FastAPI야

 

def Index():

get 동작을 사용하여 URL "/"에 대한 요청을 받을 때마다 FastAPI에 의해 호출된다.

 

return {"message" : "Helloword"}

(해석) -> 서버에 {"message" : "Helloword"} 메시지를 띄운다.

딕셔너리(dic), 리스트(list), 문자열(str), 정수(int), Pydantic 모델을 반환할 수 있다. -> 지금은 dic

JSON으로 자동 변환되는 객체들과 모델들이 많이 있다.(ORM 등을 포함해서)

 

2. 터미널에 uvicorn main:app --reload 입력한다.

main : main.py를 의미한다.

ex) main2.py가 되면 uvicorn main2:app --reload가 된다.

app : main.py에 선언한 app=FastAPI()이 만든 오브젝트

ex) @hello.get("/")이렇게 되면 uvicorn main:hello --reload가 된다.

--reload : 저장할 때마다 서버 재시작

 

3. 터미널에 뜬 로컬 주소 접속

http://127.0.0.1:8000에 ctrl(command) + 클릭

로컬에서 앱이 서비스되는 URL을 보여준다.

http://127.0.0.1:8000

접속하면 return문에 썼던 {"message" : "Hello word"}가 뜬다. (JSON 응답)