100일 챌린지/빅데이터기반 인공지능 융합 서비스 개발자

Day 87 - fastAPI 사용하기 (2)

ksyke 2024. 12. 2. 09:57

목차

    main.py

    import fastapi
    from fastapi.templating import Jinja2Templates
    from fastapi import Request
    from pydantic import BaseModel
    from starlette.responses import HTMLResponse
    
    app=fastapi.FastAPI()
    template=Jinja2Templates('templates')
    
    @app.get("/", tags=["Root"], summary="Root API", description="Hello World를 반환합니다.")
    def index():
        return HTMLResponse("<h1>Index page</h1>")
    
    @app.get("/json")
    def func02():
        return {'key1':'val1','key2':{'item1','item2'}}
    
    @app.get("/about", response_class=HTMLResponse,status_code=404)
    def about()->str:
        return '<h1>hello world 2</h1>'
    
    @app.get('/intro')
    def intro(request:Request):
        return template.TemplateResponse('intro.html',{'request':request})
    
    @app.get('/dept/{deptno}',response_class=HTMLResponse)
    def detail(deptno:int):
        return 'deptno'+str(deptno)
    
    @app.get('/dept/')
    def list(req:Request,p:int,kword:str='none key word'):
        return {'page':p,'key':kword}
    
    # @app.post('/dept/')
    # def add(bean:dict):
    #     return {'result':bean}
    
    class Dept(BaseModel):
        deptno:int
        dname:str
        loc:str='default value'
    
    @app.post('/dept/')
    def add(dept:Dept,req:Request):
        return {'result':dept}