Создание REST-конечной точки
Возвращайте ответы в формате JSON
«Создание REST-конечной точки» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Что такое REST API
REST API предоставляет доступ к ресурсам через 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, чтобы получить один элемент по его идентификатору. Если элемент не существует, верните 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 Created.
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 заменяет или обновляет существующий ресурс, определяемый его идентификатором.
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 No Content.
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 Created, 204 No Content, 400 Bad Request, 404 Not Found.
# 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.
Повторение
Вы создали конечную точку REST, возвращающую JSON.
jsonify()(или возвращённый словарь) формирует ответы JSON- Сопоставляйте методы HTTP с действиями: GET считывает, POST создаёт, PUT обновляет, DELETE удаляет
- Возвращайте содержательные коды состояния, например 201, 204, 400 и 404
- Проверяйте тело запроса и сохраняйте единообразие ответов
Часто задаваемые вопросы
Урок «Создание REST-конечной точки» бесплатный?
Да — полный текст урока «Создание REST-конечной точки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Создание REST-конечной точки»?
Возвращайте ответы в формате JSON Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Создание REST-конечной точки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Маршруты и представления
- Шаблоны с Jinja2
- Формы и данные запросов
- Создание REST-конечной точки