Skip to content

Commit d512baa

Browse files
committed
openapi.yaml 버전 업데이트 및 API 태그 추가, README.md에 openapi.yaml 설명 추가, Python 코드에서 Pydantic 모델 적용 및 API 응답 형식 개선, 불필요한 정적 파일 삭제
1 parent 3db258e commit d512baa

9 files changed

Lines changed: 317 additions & 734 deletions

File tree

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,6 @@ FodyWeavers.xsd
403403

404404
# python example
405405
sns.db
406-
.DS_Store
406+
.DS_Store
407+
408+
.venv

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,31 @@ Contoso 아웃도어 컴파니는 회사의 다양한 아웃도어용 제품 홍
7373
| Java | [java](./java/) |
7474
| .NET | [dotnet](./dotnet/) |
7575

76+
### openapi.yaml에 대한 설명
77+
78+
openapi.yaml 파일은 우리가 만들 웹 API의 설계도라고 생각하면 됩니다. 마치 건물을 짓기 전에 건축 도면이 필요한 것처럼, API를 개발하기 전에 이 파일로 전체 구조를 미리 계획합니다.
79+
80+
이 파일에서는 다음과 같은 내용을 정의합니다:
81+
- 어떤 기능들(포스트 작성, 댓글 달기, 좋아요 등)을 만들지
82+
- 각 기능을 사용하려면 어떤 주소(URL)로 요청해야 하는지
83+
- 요청할 때 어떤 정보가 필요한지(예: 포스트 내용, 사용자 이름)
84+
- 요청 후 어떤 응답이 돌아오는지
85+
86+
초보자에게 가장 큰 장점은:
87+
- 개발 전에 API 구조를 명확히 볼 수 있어 전체 그림을 이해하기 쉽습니다
88+
- 여러 개발자가 같은 규칙으로 작업할 수 있습니다
89+
- 자동으로 API 문서와 테스트 페이지가 생성됩니다
90+
- 클라이언트(앱이나 웹) 개발자와 서버 개발자 간의 소통이 쉬워집니다
91+
92+
마치 레고 조립 설명서처럼, 어떤 부품이 어디에 들어가는지 미리 알려주는 역할을 합니다.
93+
94+
openapi.yaml은 SNS 앱을 위한 API 설계도로, 다음 기능들을 정의합니다:
95+
96+
* 포스트 관련 API (5개)
97+
** 포스트 목록 조회, 작성, 상세 조회, 수정, 삭제
98+
* 댓글 관련 API (5개)
99+
** 댓글 목록 조회, 작성, 상세 조회, 수정, 삭제
100+
* 좋아요 관련 API (2개)
101+
** 좋아요 추가, 취소
102+
103+
각 API는 필요한 요청 정보와 응답 형식, 오류 처리 방법이 명확히 정의되어 있어 개발 시 일관된 인터페이스를 구현할 수 있습니다.

docs/01-python.md

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,80 @@
22

33
## 시나리오
44

5-
Contoso 아웃도어 컴파니의 마케팅 팀에서는 제품 홍보를 위한 마이크로 소셜 미디어 웹사이트를 빠르게 론칭하고 싶어 합니다. 개발팀의 Python 개발자인 당신은 GitHub Codespaces 안에서 GitHub Copilot을 이용해 간단한 백엔드 API를 만들어 달라는 요청을 받았습니다.
5+
Contoso 아웃도어 컴파니의 마케팅 팀에서는 제품 홍보를 위한 마이크로 소셜 미디어 웹사이트를 빠르게 론칭하고 싶어 합니다. 개발팀의 Python 개발자인 당신은 GitHub Codespaces 안에서 GitHub Copilot을 이용해 간단한 백엔드 API를 만들어 달라는 요청을 받았습니다. 이에 따라 FastAPI를 사용하여 SNS 기능을 구현하고, 간단히 SQLite 데이터베이스를 연동해 CRUD를 수행하려고 합니다.
66

77
## 사전 준비사항
88

99
[README](../README.md) 문서를 참조하여 개발 환경을 준비합니다.
1010

1111
## 개발 과정 프롬프트
1212

13-
TBD
13+
아래는 FastAPI 앱을 개발하여 간단한 SNS 기능을 구현하는 과정입니다.
1414

15+
* FastAPI 앱 프로젝트 준비
16+
* CRUD API 구현
17+
* 가상환경으로 앱 실행
18+
* API 확인
19+
* 기본 데이터베이스 테이블 생성
1520

16-
---
21+
### FastAPI 앱 프로젝트 준비
22+
23+
1. 가상환경 생성
24+
25+
Python 프로젝트 디렉토리를 생성하고, 다음 명령어로 가상환경(venv)을 만듭니다:
26+
27+
```bash
28+
python -m venv .venv
29+
```
30+
31+
2. 가상환경 활성화 및 FastAPI 설치
32+
33+
# Windows
34+
35+
```bash
36+
.venv\Scripts\activate
37+
```
38+
39+
# macOS / Linux
40+
```bash
41+
source .venv/bin/activate
42+
```
43+
44+
```bash
45+
pip install fastapi uvicorn
46+
```
47+
48+
3. main.py 빈 파일 생성
49+
50+
### CRUD API 구현
51+
52+
FastAPI를 활용하여 소셜 네트워크 서비스의 모든 핵심 기능을 REST API로 구현합니다.
53+
54+
```text
55+
FastAPI를 사용하여 openapi.yaml 명세를 기반으로 소셜 네트워크 서비스의 백엔드 API를 구현해. openapi.yaml의 정의에 따라 포스트, 댓글, 좋아요 기능을 포함하는 모든 엔드포인트를 구현한다. 명세에 맞게 적절한 HTTP 메소드, 상태 코드, 요청/응답 형식을 구현하낟. Pydantic 모델을 사용하여 데이터 검증을 구현하고, 예외 처리도 포함해주세요. 데이터는 데이터베이스 없이 간단한 메모리로 관리한다.
56+
```
57+
58+
### 가상환경으로 앱 실행
59+
60+
```bash
61+
source .venv/bin/activate
62+
```
63+
64+
```bash
65+
uvicorn python.main:app --reload
66+
```
67+
68+
### API 확인
69+
70+
브라우저에서 http://127.0.0.1:8000/docs 접속
71+
72+
### 기본 데이터베이스 테이블 생성
73+
74+
애플리케이션에 필요한 데이터를 저장할 SQLite 데이터베이스 스키마를 구성합니다.
75+
76+
```text
77+
SQLite 데이터베이스를 사용하여 openapi.yaml 명세를 참고하여 현재 정의된 API를 구현한다. 애플리케이션 시작 시 자동으로 데이터베이스와 테이블을 생성하는 코드를 구현하되, 테이블이 이미 존재하는 경우 다시 생성하지 않도록 'CREATE TABLE IF NOT EXISTS' 구문을 사용하세요.
78+
```
79+
80+
서버를 재시작한 후에도 SQLite 데이터베이스에 저장된 포스트 데이터가 유지되는지 확인합니다.
1781

18-
축하합니다! **Python 앱 개발** 실습이 끝났습니다. 이제 [STEP 02: JavaScript 앱 개발](./02-javascript.md) 단계로 넘어가세요.

0 commit comments

Comments
 (0)