Open CutTheWire opened 2 months ago
이 프로젝트는 FastAPI를 사용하여 다양한 기능을 제공하는 웹 애플리케이션을 개발한 예입니다. 주로 MongoDB와 MySQL 데이터베이스를 사용하여 데이터 처리를 수행하며, 각 기능은 라우터로 구분되어 있습니다.
pytest
venv_install.bat
venv_setup.bat
error.log
DB_mongo.py
DB_mysql.py
Error_handlers.py
Models.py
server.py
.env
FastAPI
lifespan
custom_openapi()
/mysql
/mongo
create_chatlog_collection
add_chatlog_value
get_chatlog_value
remove_chatlog_value
API 명세서를 포함한 FastAPI 프로젝트 구조와 주요 엔드포인트에 대한 설명을 추가하겠습니다.
📦fastapi ┣ 📂batchfile ┃ ┣ 📜venv_install.bat ┃ ┗ 📜venv_setup.bat ┣ 📂sources ┃ ┣ 📂utils ┃ ┃ ┣ 📜DB_mongo.py ┃ ┃ ┣ 📜DB_mysql.py ┃ ┃ ┣ 📜Error_handlers.py ┃ ┃ ┗ 📜Models.py ┃ ┣ 📜.env ┃ ┗ 📜server.py ┣ 📜.DS_Store ┣ 📜Dockerfile ┣ 📜requirements.txt ┗ 📜wait-for-it.sh
API 명세서는 프로젝트의 주요 엔드포인트와 그 기능에 대한 설명을 포함합니다.
각 엔드포인트는 MySQL과 MongoDB 관련 작업을 다룹니다.
/mysql/tables
/mysql/query
테이블 목록 가져오기
GET /mysql/tables
응답:
{ "Tables": ["users", "orders", "products"] }
사용자 정의 쿼리 실행
GET /mysql/query
{ "Result": [ {"id": 1, "name": "John Doe"}, {"id": 2, "name": "Jane Doe"} ] }
/mongo/db
/mongo/collections
/mongo/chat/create
/mongo/chat/save_log
/mongo/chat/load_log
/mongo/chat/delete_log
데이터베이스 목록 가져오기
GET /mongo/db
{ "Database": ["db1", "db2", "db3"] }
데이터베이스 컬렉션 목록 조회
GET /mongo/collections
{ "Collections": ["collection1", "collection2", "collection3"] }
유저 채팅방 ID 생성
엔드포인트: POST /mongo/chat/create
POST /mongo/chat/create
설명: 새로운 유저 채팅 문서(채팅 로그)를 MongoDB에 생성합니다.
요청 본문:
{ "user_id": "shaa97102" }
{ "Document ID": "123e4567-e89b-12d3-a456-426614174000" }
유저 채팅 저장
엔드포인트: PUT /mongo/chat/save_log
PUT /mongo/chat/save_log
설명: 생성된 채팅 문서에 유저의 채팅 데이터를 저장합니다.
{ "user_id": "shaa97102", "id": "123e4567-e89b-12d3-a456-426614174000", "img_url": "<https://drive.google.com/thumbnail?id=12PqUS6bj4eAO_fLDaWQmoq94-771xfim>", "input_data": "안녕하세요, 챗봇!", "output_data": "안녕하세요! 무엇을 도와드릴까요?" }
{ "Result": "Successfully added data to document with ID: 123e4567-e89b-12d3-a456-426614174000" }
유저 채팅 불러오기
엔드포인트: POST /mongo/chat/load_log
POST /mongo/chat/load_log
설명: 생성된 채팅 문서의 채팅 로그를 MongoDB에서 불러옵니다.
{ "user_id": "shaa97102", "id": "123e4567-e89b-12d3-a456-426614174000" }
{ "id": "123e4567-e89b-12d3-a456-426614174000", "value": [ { "index": 1, "img_url": "<https://drive.google.com/thumbnail?id=12PqUS6bj4eAO_fLDaWQmoq94-771xfim>", "input_data": "안녕하세요, 챗봇!", "output_data": "안녕하세요! 무엇을 도와드릴까요?" } ] }
유저 채팅 일부 지우기
엔드포인트: DELETE /mongo/chat/delete_log
DELETE /mongo/chat/delete_log
설명: 최신 대화 ~ 선택된 채팅을 로그에서 삭제합니다.
{ "user_id": "user123", "id": "123e4567-e89b-12d3-a456-426614174000", "index": 1 }
{ "Result": "Successfully removed data from index: 1 to the end in document with ID: 123e4567-e89b-12d3-a456-426614174000" }
/
헬스 체크
GET /
{ "Connection": "Success" }
FastAPI 프로젝트 구조 설명
이 프로젝트는 FastAPI를 사용하여 다양한 기능을 제공하는 웹 애플리케이션을 개발한 예입니다. 주로 MongoDB와 MySQL 데이터베이스를 사용하여 데이터 처리를 수행하며, 각 기능은 라우터로 구분되어 있습니다.
디렉터리 및 파일 설명
pytest
를 사용하여 테스트할 때 생성되는 캐시 파일들이 위치한 폴더입니다.venv_install.bat
: 가상 환경 설치를 위한 배치 파일.venv_setup.bat
: 가상 환경 설정을 위한 배치 파일.error.log
)이 포함된 폴더입니다.DB_mongo.py
: MongoDB와 상호작용하는 핸들러 클래스가 정의된 모듈.DB_mysql.py
: MySQL과 상호작용하는 핸들러 클래스가 정의된 모듈.Error_handlers.py
: 애플리케이션 전반에서 사용되는 예외 처리를 정의한 모듈.Models.py
: 데이터베이스 모델 및 데이터 검증을 위한 Pydantic 모델이 정의된 모듈.server.py
: FastAPI 애플리케이션의 메인 서버 파일로, 모든 라우터와 미들웨어 설정이 정의되어 있습니다..env
: 환경 변수 설정 파일로, 데이터베이스 접속 정보와 같은 민감한 정보들이 포함됩니다.주요 코드 설명 (
server.py
)FastAPI
객체를 생성하면서lifespan
을 사용해 애플리케이션의 수명 주기를 관리합니다.custom_openapi()
함수를 사용하여 OpenAPI 문서에 대한 커스터마이징을 수행합니다./mysql
경로 하위에 MySQL 관련 기능을 제공합니다./mongo
경로 하위에 MongoDB 관련 기능을 제공합니다.데이터베이스 핸들러 설명 (
DB_mongo.py
,DB_mysql.py
)create_chatlog_collection
,add_chatlog_value
,get_chatlog_value
,remove_chatlog_value
등의 메서드가 포함되어 있습니다.API 명세서를 포함한 FastAPI 프로젝트 구조와 주요 엔드포인트에 대한 설명을 추가하겠습니다.
프로젝트 구조
API 명세서
API 명세서는 프로젝트의 주요 엔드포인트와 그 기능에 대한 설명을 포함합니다.
기본 정보
엔드포인트
각 엔드포인트는 MySQL과 MongoDB 관련 작업을 다룹니다.
MySQL 관련 엔드포인트
/mysql/tables
/mysql/query
예시
테이블 목록 가져오기
GET /mysql/tables
응답:
사용자 정의 쿼리 실행
GET /mysql/query
응답:
MongoDB 관련 엔드포인트
/mongo/db
/mongo/collections
/mongo/chat/create
/mongo/chat/save_log
/mongo/chat/load_log
/mongo/chat/delete_log
예시
데이터베이스 목록 가져오기
GET /mongo/db
응답:
데이터베이스 컬렉션 목록 조회
GET /mongo/collections
응답:
유저 채팅방 ID 생성
엔드포인트:
POST /mongo/chat/create
설명: 새로운 유저 채팅 문서(채팅 로그)를 MongoDB에 생성합니다.
요청 본문:
응답:
유저 채팅 저장
엔드포인트:
PUT /mongo/chat/save_log
설명: 생성된 채팅 문서에 유저의 채팅 데이터를 저장합니다.
요청 본문:
응답:
유저 채팅 불러오기
엔드포인트:
POST /mongo/chat/load_log
설명: 생성된 채팅 문서의 채팅 로그를 MongoDB에서 불러옵니다.
요청 본문:
응답:
유저 채팅 일부 지우기
엔드포인트:
DELETE /mongo/chat/delete_log
설명: 최신 대화 ~ 선택된 채팅을 로그에서 삭제합니다.
요청 본문:
응답:
헬스 체크 엔드포인트
/
헬스 체크
GET /
응답: