from fastapi import FastAPI
from pydantic import BaseModel
import requests
app = FastAPI()
db = []
class City(BaseModel): #--> BaseModel을 기반으로 class model을 만들예정
name : str
timezone : str
@app.get("/") #--> 예시1
def root():
return {"Hello" : "World!"}
#--------------------------------------------------------------------------------------------------
@app.get('/cities')
def get_cities(): ##--> 여러개의 도시 정보를 불러와주는것
results =[]
for city in db: ##--> db에서 한개씩 나온 것을 city라고 정의했을뿐
strs = f"http://worldtimeapi.org/api/timezone/{city['timezone']}"
r = requests.get(strs) ##--> get으로 상대의 API를 가져온다는것...음...
cur_time = r.json()['datetime'] ##--> r을 json화 한 것중 timezone만 가져옴
results.append({'name' : city['name'], 'timezone' : city['timezone'], 'current_time' : cur_time}) ##--> append할땐 파이썬의 형식 아무거나 OK
return results
@app.get('/cities/{city_id}')
def get_city(city_id : int): ##--> 한개의 도시 정보를 불러오는것
city = db[city_id-1] ##--> index는 1번째가 0부터 시작하므로
strs = f"http://worldtimeapi.org/api/timezone/{city['timezone']}"
r = requests.get(strs)
cur_time = r.json()['datetime']
return {'name' : city['name'], 'timezone' : city['timezone'], 'current_time' : cur_time}
@app.post('/cities') ##--> 도시 정보를 생성하는 것
def create_city(city : City):
db.append(city.dict()) ##--> 위의 class에서 만든 City 모델의 정보를 dictionary화 해줘야함..왜? --> city를 dict화 해서 넣어야 정보가 db에 저장됨..?
return db[-1] ##--> db에 append를 통해서 city정보를 넣으면, return값은 가장 마지막것을 반환해주기 위해 [-1]하는것
@app.delete("/cities/{city_id}") ##--> city_id 정보를 삭제하는것
def delete_city(city_id : int):
db.pop(city_id-1)
return {}
1) post
: class City(BaseModele)의 "name"과 "timezone" 정보로 create한다.
2) cities get
: @app.get('/cities')
def get_cities(): 에서 create한 모든 cities 정보를 불러온다.(총 2개 : 서울과 부산)
3) city get
:@app.get('/cities/{city_id}')
def get_city(city_id : int): 에서 'city_id=1'과 'city_id=2'를 통해 각각의 city의 정보를 불러온다.
4) delete
:@app.delete("/cities/{city_id}")
def delete_city(city_id : int): 에서 'city_id=1'을 삭제한다.
5) 다시 cities get
: 'city_id=1'을 삭제한 후에 cities의 정보를 확인한다.
'city_id=2'의 city정보만 확인 가능하다.
FastAPI 검색하다가 우연히 들어왔습니다. 멋져요 유진님 !!