REST 엔드포인트 만들기
JSON 응답 반환하기
REST 엔드포인트 만들기은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
REST API란 무엇인가요
REST API는 표준 HTTP 메서드를 사용하여 HTTP를 통해 리소스를 제공합니다. HTML 페이지 대신 일반적으로 JSON 형식의 데이터를 반환하여 다른 프로그램이 사용할 수 있게 합니다.
from flask import Flask, jsonify
app = Flask(__name__)
# REST endpoints return data, not pages
print('REST APIs speak JSON over HTTP')JSON 반환하기
jsonify()는 Python 딕셔너리나 목록을 올바른 콘텐츠 형식의 JSON 응답으로 변환합니다.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/status')
def status():
return jsonify({'status': 'ok'})
print('jsonify builds a JSON response')딕셔너리 자동 변환
최신 Flask에서는 반환된 딕셔너리도 자동으로 JSON으로 변환하므로 jsonify()를 생략할 수 있는 경우가 많습니다.
from flask import Flask
app = Flask(__name__)
@app.route('/api/ping')
def ping():
return {'message': 'pong'}
print('Returning a dict yields JSON')목록 반환하기
컬렉션을 반환하려면 목록을 jsonify()에 전달합니다. 각 항목은 일반적으로 하나의 리소스를 나타내는 딕셔너리입니다.
from flask import Flask, jsonify
app = Flask(__name__)
books = [{'id': 1, 'title': 'A'}, {'id': 2, 'title': 'B'}]
@app.route('/api/books')
def list_books():
return jsonify(books)
print('Return a list of resources')GET으로 리소스 하나 가져오기
동적인 URL 구성 요소를 사용하여 ID로 항목 하나를 가져옵니다. 항목이 존재하지 않으면 404를 반환합니다.
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>')
def get_book(bid):
book = books.get(bid)
if book is None:
return jsonify({'error': 'not found'}), 404
return jsonify(book)
print('GET /api/books/1')POST로 생성하기
POST 요청은 리소스를 생성합니다. JSON 본문을 읽고 새 항목을 만든 다음 상태 201 생성됨과 함께 반환합니다.
from flask import Flask, request, jsonify
app = Flask(__name__)
books = []
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json()
book = {'id': len(books) + 1, 'title': data['title']}
books.append(book)
return jsonify(book), 201
print('POST creates and returns 201')PUT으로 업데이트하기
PUT은 ID로 식별되는 기존 리소스를 대체하거나 업데이트합니다.
from flask import Flask, request, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['PUT'])
def update_book(bid):
if bid not in books:
return jsonify({'error': 'not found'}), 404
books[bid]['title'] = request.get_json()['title']
return jsonify(books[bid])
print('PUT updates a resource')DELETE로 삭제하기
DELETE는 리소스를 삭제합니다. 성공했을 때 상태 204 콘텐츠 없음을 반환하는 방식이 일반적입니다.
from flask import Flask, jsonify
app = Flask(__name__)
books = {1: {'id': 1, 'title': 'A'}}
@app.route('/api/books/<int:bid>', methods=['DELETE'])
def delete_book(bid):
if bid in books:
del books[bid]
return '', 204
return jsonify({'error': 'not found'}), 404
print('DELETE removes a resource')상태 코드의 중요성
REST는 HTTP 상태 코드에 의존합니다. 200 OK, 201 생성됨, 204 콘텐츠 없음, 400 잘못된 요청, 404 찾을 수 없음을 사용합니다.
# 200 success
# 201 created
# 204 no content
# 400 bad request
# 404 not found
print('Use the right status code')본문 검증하기
생성하기 전에 필수 필드가 있는지 확인합니다. 본문이 올바르지 않으면 오류 메시지와 함께 400을 반환합니다.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/api/books', methods=['POST'])
def create_book():
data = request.get_json(silent=True) or {}
if 'title' not in data:
return jsonify({'error': 'title required'}), 400
return jsonify(data), 201
print('Validate JSON before using it')일관된 응답
좋은 API는 예측 가능한 구조로 응답합니다. 일반적으로 데이터와 오류를 매번 같은 방식으로 감싸 클라이언트가 이를 신뢰할 수 있게 합니다.
from flask import jsonify
# Success: {'data': {...}}
# Error: {'error': 'message'}
# Keep the shape consistent across endpoints
print('Predictable shapes help clients')간단한 확인
REST에 대한 지식을 확인합니다.
복습
JSON REST 엔드포인트를 만들었습니다.
jsonify()또는 반환된 딕셔너리는 JSON 응답을 생성합니다- HTTP 메서드를 매핑합니다. GET은 조회하고, POST는 생성하며, PUT은 업데이트하고, DELETE는 삭제합니다
- 201, 204, 400, 404와 같이 의미에 맞는 상태 코드를 반환합니다
- 요청 본문을 검증하고 응답 구조를 일관되게 유지합니다
자주 묻는 질문
“REST 엔드포인트 만들기” 강의는 무료인가요?
네 — “REST 엔드포인트 만들기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“REST 엔드포인트 만들기”에서 뭘 배우나요?
JSON 응답 반환하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“REST 엔드포인트 만들기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 라우트와 뷰
- Jinja2 템플릿
- 폼과 요청 데이터
- REST 엔드포인트 만들기