0Pricing
Python Academy · Урок

Создание 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 — локальная установка не требуется.

Все уроки этого курса

  1. Маршруты и представления
  2. Шаблоны с Jinja2
  3. Формы и данные запросов
  4. Создание REST-конечной точки
← Назад к Python Academy