본문 바로가기
파이썬

45. FastAPI

by 곽정우 2024. 6. 4.

1. Fast API

FastAPI는 Python 기반의 웹 프레임워크로, 주로 API를 빠르게 개발하기 위해 설계되었습니다. FastAPI는 강력한 타입 힌팅(Type Hints)을 활용하여 개발자에게 코드 작성의 안정성과 가독성을 제공합니다.

https://fastapi.tiangolo.com/ko/



※  타입 힌팅(Type Hints)
타입 힌팅(Type Hints)은 프로그래밍 언어에서 변수, 함수 매개변수, 함수 반환값 등에 대한 데이터 타입 정보를 코드에 명시적으로 제공하는 기술입니다. Python 3.5 이상에서 도입된 기능으로, 코드의 가독성을 높이고 프로그램의 안정성을 강화하는 데 도움이 됩니다.

 

2. Streamlit

  • 파이썬으로 데이터 분석을 위한 웹앱 등을 쉽게 개발할 수 있게 도와주는 라이브러리
  • 간단한 코드로 웹 애플리케이션을 만들고 빠르게 프로토타입을 구축하고 시각적으로 공유하기 위해 사용
  • gradio, voila, binder 등과 유사
설치
    pip install streamlit

설치 확인 및 데모 확인
    streamlit hello

실행
    streamlit run app.py

# pip install fastapi
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional

app = FastAPI()

users = {
    0: {"userid": "apple", "name": "김사과"},
    1: {"userid": "banana", "name": "반하나"},
    2: {"userid": "orange", "name": "오렌지"},
    3: {"userid": "cherry", "name": "채리"}
}
# http://127.0.0.1:8080/
@app.get("/")
async def root():
    return {"message": "hello FastAPI!!"}
# http://127.0.0.1:8000/users/1
@app.get("/users/{id}")
async def find_user(id: int):
    user = users[id]
    return user
# http://127.0.0.1:8000/users/1/userid
# http://127.0.0.1:8000/users/1/name
@app.get("/users/{id}/{key}")
async def find_user_by_key(id: int, key: str):
    user = users[id][key]
    return user

class User(BaseModel):
    userid: str
    name: str
# http://127.0.0.1:8000/users/10
@app.post("/users/{id}")
async def create_user(id: int, user: User):
    if id in users:
        return {"error": "이미 존재하는 키"}
    users[id] = user.__dict__
    return {"success": "ok"}

class UserForUpdate(BaseModel):
    userid: Optional[str]
    name: Optional[str]
# 수정
# id를 입력받아 id가 존재하지 않으면 에러
# userid가 존재하면 userid를 변경
# name이 존재하면 name을 변경
@app.put("/users/{id}")
async def update_user(id: int, user: UserForUpdate):
    if id not in users:
        return {"error": "id가 존재하지 않음"}

    if user.userid:
        users[id]['userid'] = user.userid

    if user.name:
        users[id]['name'] = user.name

    return {"success": "ok"}
# 삭제
# id를 입력받아 id가 존재하면 삭제
@app.delete("/users/{id}")
async def delete_item(id: int):
    users.pop(id)
    return {"success": "ok"}

import streamlit as st

st.title('안녕하세요 streamlit!')
st.write('안녕하세요. 여기는 텍스트 구간입니다.')

"""
# 여기는 제목
## 여기는 작은 제목
- 첫번째
- 두번째
- 세번째
"""
# 텍스트 입력상자
text =st.text_input('문자입력')
st.write(text)
# 체크 박스
selected = st.checkbox("개인정보 사용에 동의하시겠습니까?")
if selected:
    st.success("동의했습니다!")
market = st.selectbox("사장", ("코스닥", "코스피", "나스닥"))
st.write(f'선택한 시장: { market}')

option = st.multiselect("종목", ['카카오', '네이버', '삼성', 'LG전자'])
st.write(", ".join(option))

st.metric(label='카카오', value='30,000원', delta='-5,000원')

'파이썬' 카테고리의 다른 글

44. 파이썬 비동기  (0) 2024.06.04
43.파이썬을 활용한 MongoDB  (0) 2024.06.03
42. Matplotlib  (0) 2024.05.28
41. 판다스(Pandas)  (0) 2024.05.24
40. 넘파이(Numpy)  (1) 2024.05.23