Flask
Chapter 2-2 Jsonify란?
Chansman
2025. 4. 18. 10:22
📌 Jsonify 란?
1. jsonify란?
jsonify는 Flask에서 Python 데이터를 JSON 형식으로 변환하여 HTTP 응답으로 반환하는 함수입니다. 이를 통해 Python의 기본 데이터 타입(딕셔너리, 리스트 등)을 JSON 형식으로 쉽게 반환할 수 있습니다.
jsonify의 사용법
- jsonify는 HTTP 응답에 **application/json**이라는 Content-Type을 자동으로 추가합니다.
- Flask 1.1.x 이후 버전에서는 jsonify 없이도 딕셔너리를 반환하면 Flask가 자동으로 JSON 형식으로 변환해주기 때문에, 기본적으로 jsonify는 필요하지 않지만 리스트나 객체의 형태를 반환할 때는 주의가 필요합니다.
**JSON (JavaScript Object Notation)**이란?
- JSON은 컴퓨터 간 상호작용을 위한 데이터 형식으로, {key: value} 형태로 데이터를 표현합니다. 예를 들어, 아래와 같은 JSON 객체가 있습니다:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
jsonify 사용 예시
from flask import jsonify
@app.route('/api/data', methods=['GET'])
def send_data():
data = {"key1": "value1", "key2": "value2"}
return jsonify(data)
2. Library Import
Flask에서 JSON 데이터를 반환하기 위해서는 jsonify를 사용합니다. 또한, HTTP 요청을 다루기 위해 request를 사용합니다.
필요한 라이브러리
from flask import Flask, request, jsonify
3. GET Method
GET 메소드는 자원을 조회할 때 사용됩니다. REST API에서 자원을 조회할 때 주로 사용되며, 예를 들어, 특정 피드를 조회하거나 모든 피드를 조회할 때 사용합니다.
GET 메소드 예시
모든 피드 조회
@app.route('/api/v1/feeds', methods=['GET'])
def show_all_feeds():
return jsonify({'result':'success', 'data': {"feed1":"data", "feed2":"data2"}})
특정 피드 조회
@app.route('/api/v1/feeds/<int:feed_id>', methods=['GET'])
def show_one_feed(feed_id):
print(feed_id) # 피드 아이디 출력
return jsonify({'result':'success', 'data': {"feed1":"data"}})
4. POST Method
POST 메소드는 자원을 생성할 때 사용됩니다. 클라이언트에서 서버로 데이터를 보내 새로운 자원을 생성하는 데 사용됩니다.
POST 메소드 예시
새 피드 생성
@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'})
Postman을 사용하여 API 테스트
- Postman은 API 테스트 도구로, API 요청을 보낼 때 유용합니다. POST 요청을 통해 데이터를 보내고, 응답을 확인할 수 있습니다.
5. 데이터 추가하기
데이터를 추가하는 예제는 POST 메소드와 함께 새로운 데이터를 리스트에 추가하는 방식입니다. 추가된 데이터는 서버 종료 시까지 메모리에 저장되며, Flask 서버가 종료되면 데이터가 사라집니다.
데이터 추가 예시
from flask import Flask, request, jsonify
app = Flask(__name__)
# 예시 데이터
datas = [{"name": "item1", "price": 10}]
# 데이터 조회
@app.get("/datas")
def get_datas():
return jsonify({'datas': datas})
# 데이터 추가
@app.post("/datas")
def create_data():
request_data = request.get_json()
new_data = {"name": request_data["name"], "price": request_data["price"]}
datas.append(new_data) # 새 데이터 추가
return jsonify(new_data), 201
Response Status Code
HTTP 상태 코드(Response Status Code)는 요청에 대한 서버의 응답을 나타냅니다. 예를 들어, 201 Created는 자원이 성공적으로 생성되었음을 나타냅니다.
주요 상태 코드
코드설명
200 | 요청 성공 |
201 | 자원 생성 성공 |
400 | 잘못된 요청 |
404 | 자원 찾을 수 없음 |
500 | 서버 내부 오류 |