План перевода для студентов в феврале 2020

Python REST APIs With Flask, Connexion, and SQLAlchemy

  1. Python REST APIs With Flask, Connexion, and SQLAlchemy‑Part 1

    Если вы писали web‑приложения, то, наверняка знаете, как сделать HTTP‑запрос на сервер (программное обеспечение) для получения данных и заполнения динамических частей своего приложения.

    Цель этой статьи — показать, как использовать Python 3, Flask и Connexion для создания полезных API REST, которые могут включать проверку ввода и вывода. В качестве бонуса — ссылка на документацию Swagger. Кроме того, мы создадим простое, но полезное одностраничное web‑приложение, которое продемонстрирует возможности API с JavaScript при обновлении Document Object Model — DOM.

    API REST, который мы создадим, будет обслуживать простую таблицу с данными о людях, где для каждого будет указана фамилия, а любые обновления будут помечаться новой отметкой времени.

    Данные могут быть представлены в базе данных, сохранены в файле или доступны через некоторый сетевой протокол, но наша структура данных будет просто располагаться в оперативной памяти. Одним из назначений создания API является скрытие деталей реализации структуры данных и отделение их от приложения.

  2. Python REST APIs With Flask, Connexion, and SQLAlchemy‑Part 2

    В первой части этой серии вы использовали Flask и Connexion для создания REST API, обеспечивающего операции CRUD для простой структуры в памяти, называемой PEOPLE. Это помогло продемонстрировать, как модуль Connexion помогает вам создавать хороший REST API вместе с интерактивной документацией.

    Как отмечалось в комментариях к части 1, структура PEOPLE переинициализируется каждый раз при перезапуске приложения. В этой статье вы узнаете, как сохранить структуру PEOPLE и действия, которые API обеспечивает, для базы данных с использованием SQLAlchemy и Marshmallow.

    SQLAlchemy предоставляет объектно-реляционную модель (ORM), которая хранит объекты Python для представления данных объекта в базе данных. Это может помочь вам продолжать мыслить на Pythonic и не беспокоиться о том, как данные объекта будут представлены в базе данных.

    Marshmallow обеспечивает функциональность для сериализации и десериализации объектов Python по мере их поступления в наш REST API на основе JSON. Marshmallow преобразует экземпляры класса Python в объекты, которые можно преобразовать в JSON.

  3. Python REST APIs With Flask, Connexion, and SQLAlchemy‑Part 3

    Во второй части этой серии вы добавили возможность сохранять изменения, сделанные с помощью API REST, в базу данных с помощью SQLAlchemy и узнали, как сериализовать эти данные для API REST с помощью Marshmallow. Соединение REST API с базой данных, чтобы приложение могло вносить изменения в существующие данные и создавать новые, прекрасно и делает приложение намного более полезным и надежным.

    Однако это только часть возможностей, предоставляемых базой данных. Еще более мощная особенность — это часть R систем СУБД: отношения. В базе данных отношения — это способность соединять две или более таблицы осмысленным образом. В этой статье вы узнаете, как реализовать отношения и превратить свою базу данных Person в веб-приложение для мини-блогов.

  4. Python REST APIs With Flask, Connexion, and SQLAlchemy‑Part 4

    В третьей части этой серии вы добавили связи к REST API и к базе данных, которая его поддерживает. Это дало вам мощный инструмент, который вы можете использовать для создания интересных программ, которые отправляют постоянные данные, а также отношения между этими данными в систему базы данных. Наличие REST API дает вам возможность создать одностраничное приложение (SPA) с HTML, CSS и JavaScript. Это хорошая отправная точка перед переходом к более мощным интерфейсным фреймворкам, таким как Angular или React.

Пример скрипта с новым плагином:

def read_one(person_id):
    """
    This function responds to a request for /api/people/{person_id}
    with one matching person from people

    :param person_id:   ID of person to find
    :return:            person matching ID
    """
    # Get the person requested
    person = Person.query \
        .filter(Person.person_id == person_id) \
        .one_or_none()

    # Did we find a person?
    if person is not None:

        # Serialize the data for the response
        person_schema = PersonSchema()
        return person_schema.dump(person).data

    # Otherwise, nope, didn't find that person
    else:
        abort(404, 'Person not found for Id: {person_id}'.format(person_id=person_id))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Как бы так получилось? *