Flask API 프로젝트: 게시글 조회 및 작성 API
이 글에서는 Flask를 사용하여 간단한 게시글 관리 API를 구축하는 방법을 설명합니다. 이 API는 게시글 목록을 조회하거나 새로운 게시글을 작성하는 기능을 제공합니다.
1. 프로젝트 설정
- Flask는 Python 기반의 웹 프레임워크로, 웹 애플리케이션을 빠르게 개발할 수 있습니다. Flask는 REST API를 구축하는 데 매우 유용합니다.
- 아래 코드는 **GET**과 POST 요청을 처리하여, 게시글 목록을 반환하거나 새로운 게시글을 생성하는 API를 구현한 예제입니다.
2. 전체 코드
from flask import Flask, jsonify, request
app = Flask(__name__)
# GET
# (1) 전체 게시글을 불러오는 API
@app.route('/api/v1/feeds', methods=['GET'])
def show_all_feeds():
data = {'result': 'success', 'data': {'feed1': 'data1', 'feed2': 'data2'}}
return jsonify(data)
# (2) 특정 게시글을 불러오는 API
@app.route('/api/v1/feeds/<int:feed_id>', methods=['GET'])
def show_one_feed(feed_id):
print(feed_id)
data = {'result': 'success', 'data': {'feed1': 'data1'}}
return jsonify(data)
# POST
# (1) 게시글을 작성하는 API
@app.route('/api/v1/feeds', methods=['POST'])
def create_one_feed():
name = request.form['name']
age = request.form['age']
print(name, age)
return jsonify({'result':'success'})
# 예시 데이터
datas = [{"items": [{"name": "item1", "price": 10}]}]
@app.route('/datas')
def get_datas():
return jsonify({"datas":datas})
@app.post("/datas")
def create_data():
request_data = request.get_json() # JSON 데이터를 받아옴
new_data = {"items": request_data.get("items", [])}
datas.append(new_data) # 새 데이터를 리스트에 추가
return new_data, 201 # 생성된 데이터와 상태 코드 201을 반환
if __name__ == '__main__':
app.run(debug=True)
3. 각 부분 설명
GET 요청: 전체 게시글을 불러오는 API
@app.route('/api/v1/feeds', methods=['GET'])
def show_all_feeds():
data = {'result': 'success', 'data': {'feed1': 'data1', 'feed2': 'data2'}}
return jsonify(data)
- /api/v1/feeds 경로로 GET 요청을 보내면, 서버는 전체 게시글 목록을 반환합니다.
- 응답은 JSON 형식으로 반환됩니다.
- result: 요청 결과
- data: 게시글 목록
GET 요청: 특정 게시글을 불러오는 API
@app.route('/api/v1/feeds/<int:feed_id>', methods=['GET'])
def show_one_feed(feed_id):
print(feed_id)
data = {'result': 'success', 'data': {'feed1': 'data1'}}
return jsonify(data)
- /api/v1/feeds/<int:feed_id> 경로로 GET 요청을 보내면, 특정 게시글을 반환합니다.
- **feed_id**는 경로에 포함된 정수형 파라미터로, 특정 게시글을 조회하기 위해 사용됩니다.
- 반환되는 응답은 **feed1**이라는 게시글에 대한 정보입니다.
POST 요청: 게시글을 작성하는 API
@app.route('/api/v1/feeds', methods=['POST'])
def create_one_feed():
name = request.form['name']
age = request.form['age']
print(name, age)
return jsonify({'result':'success'})
- /api/v1/feeds 경로로 POST 요청을 보내면, 새로운 게시글을 작성할 수 있습니다.
- 클라이언트는 **name**과 age 값을 폼 데이터로 보냅니다.
- 서버는 이 데이터를 받아 **name**과 age 값을 출력하고, 응답으로 **success**를 반환합니다.
예시 데이터 저장 및 POST 요청을 통한 데이터 추가
datas = [{"items": [{"name": "item1", "price": 10}]}]
@app.route('/datas')
def get_datas():
return jsonify({"datas": datas})
- /datas 경로로 GET 요청을 보내면, datas 변수에 저장된 데이터를 반환합니다.
새로운 데이터 추가
@app.post("/datas")
def create_data():
request_data = request.get_json()
new_data = {"items": request_data.get("items", [])}
datas.append(new_data)
return new_data, 201
- POST 요청을 통해 새로운 데이터를 JSON 형식으로 보내면, 서버는 이 데이터를 받아 datas 리스트에 추가합니다.
- 응답으로 **new_data**와 HTTP 상태 코드 201을 반환합니다. 201은 **"새 리소스가 성공적으로 생성되었다"**는 의미입니다.
4. 흐름에 따른 요청 예시
- 전체 게시글 조회 (GET 요청):
- URL: http://127.0.0.1:5000/api/v1/feeds
- 응답:
{
"result": "success",
"data": {
"feed1": "data1",
"feed2": "data2"
}
}
2.특정 게시글 조회 (GET 요청):
URL: http://127.0.0.1:5000/api/v1/feeds/1
응답:
{
"result": "success",
"data": {
"feed1": "data1"
}
}
3. 게시글 작성 (POST 요청):
URL: http://127.0.0.1:5000/api/v1/feeds
Body (Form data):
name=John
age=30
응답:
{
"result": "success"
}
4.새로운 데이터 추가 (POST 요청):
URL: http://127.0.0.1:5000/datas
Body (JSON):
{
"items": [
{"name": "item2", "price": 20}
]
}
응답:
{
"items": [
{"name": "item2", "price": 20}
]
}
5. 결론
- 이 Flask API는 게시글 조회 및 생성을 처리할 수 있습니다.
- GET 요청을 사용하여 전체 게시글 또는 특정 게시글을 조회하고, POST 요청을 사용하여 새로운 데이터를 생성하거나 폼 데이터를 처리합니다.
- **request.get_json()**은 JSON 형식의 데이터를 받아오는 방식이고, **request.form**은 폼 데이터를 처리하는 방식입니다.
'프로젝트' 카테고리의 다른 글
Flask와 MySQL을 사용한 간단한 사용자 관리 API 구현 (0) | 2025.04.18 |
---|---|
Flask를 이용한 CRUD API 구현 (restful api) (0) | 2025.04.18 |
Flask와 Jinja 템플릿 활용 프로젝트 (0) | 2025.04.17 |
Chapter 3 Kream 크롤링, 웹스크래핑 프로젝트(자동화) (0) | 2025.04.16 |
Chapter 3 Kream 크롤링, 웹스크래핑 프로젝트(데이터베이스,MySQL) (0) | 2025.04.16 |