Chapter 2-2 Jsonify란?

2025. 4. 18. 10:22·Flask

📌  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 요청을 통해 데이터를 보내고, 응답을 확인할 수 있습니다.

Postman 다운로드


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 서버 내부 오류

 

'Flask' 카테고리의 다른 글

Chapter 2-4 Flask-Smorest 활용하여 REST API 생성  (0) 2025.04.18
Chapter 2-3 Flask-RESTful API  (0) 2025.04.18
Chapter 2-1 REST API 개념 정리 및 해석  (0) 2025.04.18
Chapter 1-6 Flask 프로젝트 세팅  (0) 2025.04.17
Chapter 1-8 Jinja (Template Engine)  (0) 2025.04.17
'Flask' 카테고리의 다른 글
  • Chapter 2-4 Flask-Smorest 활용하여 REST API 생성
  • Chapter 2-3 Flask-RESTful API
  • Chapter 2-1 REST API 개념 정리 및 해석
  • Chapter 1-6 Flask 프로젝트 세팅
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (777) N
      • Python (32)
      • 프로젝트 (101) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    youngprofessionals
    life reflection
    gpterror
    college reunions
    RM
    lawsuitculture
    homebartrend
    btsreunion
    bts
    americaparty
    urbantrends
    chinanightlife
    livebroadcast
    travel ban
    btsdischarge
    basalcellcarcinoma
    titaniumcase
    hotcoffeecase
    smartphonedurability
    remittance
    trumpmuskclash
    뷔
    self-growth
    btscomeback
    global politics
    btsjungkook
    classaction
    newpoliticalparty
    americanlaw
    chatgpterror
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 2-2 Jsonify란?
상단으로

티스토리툴바