AI/MLOps
[MLOps] requests로 Streamlit과 FastAPI 연결하기
brave_sol
2024. 12. 5. 00:30
1. streamlit과 fastapi 연결
# 파일 구조
fe_main.py # 터미널1에서 실행: streamlit run fe_main.py
be_main.py # 터미널2에서 실행: uvicorn be_main:app --reload
1) fe_main.py
import streamlit as st
import requests
st.title('안녕하세요😊 API 연습장 입니다!')
st.write("오늘의 행운의 숫자를 확인해 보세요!")
if st.button("행운의 숫자 조회하기"):
response = requests.get(f"http://127.0.0.1:8000/number")
if response.status_code == 200:
rand_num = response.json().get("rand_num")
st.write(f"오늘의 행운의 숫자는 ~~!! {rand_num} 입니다")
else:
st.error("FastAPI 호출 실패")
2) be_main.py
from fastapi import FastAPI
import numpy as np
app = FastAPI()
@app.get("/number")
def get_luck_num():
rand_num = int(np.random.randint(1,101))
return {"rand_num":rand_num}
2. requests
- HTTP요청을 쉽게 처리할 수 있도록 설계된 라이브러리
1) HTTP 요청 메서드
메서드 | 의미 | 예시 |
get | 서버에서 데이터를 조회 | response = requests.get("https://example.com/api") |
post | 데이터를 서버로 보냄 | data = {"key": "value"} response = requests.post("https://example.com/api", json=data) |
put | 서버에 데이터를 업데이트 | url = "https://example.com/api/resource/1" data = { "name": "Updated Name", "description": "Updated Description", "status": "active" } response = requests.put(url, json=data) |
delete | 서버에서 데이터를 삭제 | response = requests.delete("https://example.com/api/resource") |
patch | 서버 데이터의 일부를 수정 | url = "https://example.com/api/resource/1" data = { "status": "inactive" # 리소스의 상태만 수정 } response = requests.patch(url, json=data) |
2) 주요 매개변수
매개변수 | 의미 | 예시 |
params | url에 쿼리 매개변수를 추가 | response = requests.get("https://example.com/api", params={"key": "value"}) # 결과: https://example.com/api?key=value |
data | 폼 데이터를 전송 | response = requests.post("https://example.com/api", data={"key": "value"}) |
json | json 데이터를 전송 | response = requests.post("https://example.com/api", json={"key": "value"}) |
header | 요청에 사용자 정의 헤더 추가 | headers = {"Authorization": "Bearer <token>"} response = requests.get("https://example.com/api", headers=headers) |
files | 파일 업로드할 때 사용 | files = {"file": open("example.txt", "rb")} response = requests.post("https://example.com/upload", files=files) |
3) 응답 처리
속성 | 의미 |
response.status_code | HTTP 응답 코드를 반환 (예: 200, 404) |
response.text | 응답의 원시 텍스트를 반환 |
response.json() | 응답을 JSON으로 파싱 |
response.content | 바이너리 데이터를 반환 (예: 이미지, 파일 다운로드) |
response.headers | 응답 헤더 정보를 반환 |
반응형