Files
fastapi_tutorail/01_fastapi_first_step/client.py
2026-02-27 12:13:57 +09:00

84 lines
2.4 KiB
Python

import requests
import sys
SERVER_URL = "http://localhost:8000"
def post_message(user_name, content):
"""서버로 메시지를 전송합니다."""
payload = {
"name": user_name,
"message": content
}
try:
response = requests.post(f"{SERVER_URL}/messages", json=payload)
if response.status_code == 200:
print("전송 성공!")
return True
else:
print(f"전송 실패: {response.text}")
return False
except Exception as e:
print(f"오류 발생: {e}")
return False
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":
message_content = input("메시지 내용: ").strip()
if message_content:
post_message(user_name, message_content)
else:
print("메시지를 입력해주세요.")
elif choice == "2":
new_msgs = get_messages(start_index)
start_index += len(new_msgs)
elif choice == "3":
print("프로그램을 종료합니다.")
sys.exit(0)
else:
print("잘못된 입력입니다. 1~3 사이의 숫자를 입력해주세요.")
if __name__ == "__main__":
main()