[FastAPI] 로컬 서버 만들기
(전 피드 보고 오기)
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을 보여준다.
접속하면 return문에 썼던 {"message" : "Hello word"}가 뜬다. (JSON 응답)