init
This commit is contained in:
105
01_fastapi_first_step/README.md
Normal file
105
01_fastapi_first_step/README.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# 프로젝트 목표
|
||||
|
||||
- fastapi 학습을 위한 간단한 채팅 프로그램 구현
|
||||
|
||||
# 구성요소 및 요구사항
|
||||
|
||||
- 서버: server.py
|
||||
- 클라이언트로 부터 메시지를 수신, 수신한 메시지를 리스트로 저장
|
||||
- 수신한 메시지는 다음과 같은 형식으로 전달됨
|
||||
```json
|
||||
{
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용"
|
||||
}
|
||||
```
|
||||
- 메시지에 'timestamp' 필드를 추가하여 현재 시간을 저장함. 다음과 같은 항목으로 리스트에 저장함.
|
||||
```json
|
||||
{
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용",
|
||||
"timestamp": "2022-01-01 00:00:00"
|
||||
}
|
||||
```
|
||||
- 클라이언트에 메시지 전송
|
||||
- 클라이언트에 메시지를 전송함. 클라이언트로 부터 query message로 `start` 매개변수를 전달받으며, `start` 매개변수 이후 메시지를 모두 전송함.
|
||||
예: `start=2` 일 경우 messages[2:]를 전송함.
|
||||
|
||||
- 클라이언트: client.py
|
||||
- 초기화: 프로그램 시작 시, 사용자의 이름을 물어봄
|
||||
```bash
|
||||
이름을 입력해주세요 >
|
||||
```
|
||||
- 작업 수행을 위한 프롬프트 출력: 다음과 같은 프롬프트를 출력하고, 1~3사이 숫자를 입력받습니다. 만약 잘못된 값을 입력하면 다시 입력받습니다.
|
||||
```bash
|
||||
수행할 작업을 선택해주세요:
|
||||
1. 메시지 전송
|
||||
2. 수신한 메시지 보기
|
||||
3. 종료
|
||||
```
|
||||
- 메시지 전송: 전송할 메시지를 입력받고, 서버로 전송합니다. 전송할 메시지 형식은 다음과 같습니다.
|
||||
```json
|
||||
{
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용"
|
||||
}
|
||||
```
|
||||
- 서버로 부터 메시지를 수신:
|
||||
- 수신한 메시지는 다음과 같은 형식을 가짐
|
||||
```json
|
||||
{
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용",
|
||||
"timestamp": "2022-01-01 00:00:00"
|
||||
}
|
||||
```
|
||||
|
||||
- 수신한 메시지를 다음과 같은 형식으로 출력함
|
||||
```bash
|
||||
[2022-01-01 00:00:00] 사용자 이름: 메시지 내용
|
||||
```
|
||||
|
||||
- `start` 변수를 통해 메시지 수신을 시작할 인덱스를 저장하고 있어야 함. 이 값을 메시지를 수신 요청시 서버로 `start` 매개변수를 전달하여야 하며, 메시지를 수신한 수 만큼 `start` 변수를 증가시켜야 함.
|
||||
|
||||
# Specification
|
||||
## Server
|
||||
- 다음과 같은 API를 제공함
|
||||
|
||||
### 1. 메시지 전송
|
||||
- **URL**: `/messages`
|
||||
- **Method**: `POST`
|
||||
- **Request Body**:
|
||||
```json
|
||||
{
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용"
|
||||
}
|
||||
```
|
||||
- **Response**:
|
||||
```json
|
||||
{
|
||||
"status": "success",
|
||||
"received": {
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용",
|
||||
"timestamp": "2022-01-01 00:00:00"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 메시지 수신 (조회)
|
||||
- **URL**: `/messages`
|
||||
- **Method**: `GET`
|
||||
- **Query Parameters**:
|
||||
- `start` (int, default=0): 이 인덱스부터의 메시지를 가져옴
|
||||
- **Response**:
|
||||
```json
|
||||
[
|
||||
{
|
||||
"name": "사용자 이름",
|
||||
"message": "메시지 내용",
|
||||
"timestamp": "2022-01-01 00:00:00"
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
Reference in New Issue
Block a user