From 8c0819feeadcbd583f97a27dca60fef7e2642eda Mon Sep 17 00:00:00 2001 From: Godopu Date: Sat, 28 Feb 2026 12:45:54 +0900 Subject: [PATCH] feat: Add initial client and server templates for FastAPI tutorial. --- 01_fastapi_first_step/client_template.py | 59 ++++++++++++++++++++++++ 01_fastapi_first_step/server_template.py | 26 +++++++++++ 2 files changed, 85 insertions(+) create mode 100644 01_fastapi_first_step/client_template.py create mode 100644 01_fastapi_first_step/server_template.py diff --git a/01_fastapi_first_step/client_template.py b/01_fastapi_first_step/client_template.py new file mode 100644 index 0000000..e544482 --- /dev/null +++ b/01_fastapi_first_step/client_template.py @@ -0,0 +1,59 @@ +import requests +import sys + +SERVER_URL = "http://localhost:8000" + +def post_message(user_name, content): + + +def get_messages(start_index): + """서버로부터 새로운 메시지를 가져옵니다.""" + try: + response = requests.get(f"{SERVER_URL}/messages", params={"start": start_index}) + + if response.status_code == 200: + new_messages = response.json() + if not new_messages: + print("새로운 메시지가 없습니다.") + else: + for msg in new_messages: + print(f"[{msg['timestamp']}] {msg['name']}: {msg['message']}") + return new_messages + else: + print(f"메시지 수신 실패: {response.text}") + return [] + + except Exception as e: + print(f"오류 발생: {e}") + return [] + +def main(): + print("FastAPI 채팅 클라이언트에 오신 것을 환영합니다!") + user_name = input("이름을 입력해주세요 > ").strip() + if not user_name: + user_name = "Anonymous" + + start_index = 0 + + while True: + print("\n수행할 작업을 선택해주세요:") + print("1. 메시지 전송") + print("2. 수신한 메시지 보기") + print("3. 종료") + + choice = input("> ").strip() + + if choice == "1": + + + elif choice == "2": + + + elif choice == "3": + + + else: + print("잘못된 입력입니다. 1~3 사이의 숫자를 입력해주세요.") + +if __name__ == "__main__": + main() diff --git a/01_fastapi_first_step/server_template.py b/01_fastapi_first_step/server_template.py new file mode 100644 index 0000000..201d121 --- /dev/null +++ b/01_fastapi_first_step/server_template.py @@ -0,0 +1,26 @@ +from fastapi import FastAPI, Query +from pydantic import BaseModel +from datetime import datetime +from typing import List + +app = FastAPI() + +# 메시지 저장을 위한 리스트 +messages = [] + +class Message(BaseModel): + name: str + message: str + +@app.post("/messages") +def post_message(msg: Message): + + +@app.get("/messages") +def get_messages(start: int = 0): + + +if __name__ == "__main__": + import uvicorn + # 터미널에서 직접 실행할 때를 위해 uvicorn 설정 추가 + uvicorn.run(app, host="0.0.0.0", port=8000) \ No newline at end of file