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

Day 86 - fastAPI 사용하기 (1)

ksyke 2024. 11. 29. 17:58

목차

    main.py

    from fastapi.responses import HTMLResponse
    
    import fastapi
    from fastapi.templating import Jinja2Templates
    from fastapi import Request
    
    import dept
    
    app=fastapi.FastAPI()
    templates=Jinja2Templates(directory="templates")
    
    app.include_router(dept.router)
    
    @app.get("/")
    def index(request: Request):
        # return {"key1":"val1"}
        # return ["item1","item2"]
        # return HTMLResponse("<h1>메인 페이지입니다.</h1>")
        return templates.TemplateResponse('index.html',{"request":request})
    
    @app.get("/intro",response_class=HTMLResponse)
    def intro():
        return "<img src='https://www.inje.ac.kr/kor/assets/images/sub/gimhae-campus-1-241008.jpg'/>"

    dept.py

    import mysql.connector
    from fastapi import APIRouter
    
    router=APIRouter(prefix='/dept')
    
    mydb=mysql.connector.connect(
      host="localhost",
      user="scott",
      password="tiger"
    )
    @router.get("/")
    def list():
        mycursor=mydb.cursor()
        sql="select * from dept"
        mycursor.execute(sql)
        data=list(mycursor.fetchall())
        mycursor.close()
        return data
    
    @router.post("/add")
    def add(deptno:int,dname:str,loc:str):
        val=(deptno,dname,loc)
    
        mycursor=mydb.cursor()
        sql="insert into dept values ({},'{}','{}'}".format(deptno,dname,loc)
        mycursor.execute(sql)
        mydb.commit()
        mycursor.close()
        return val

    post 방식 테스트하기

    템플릿 사용하기