Узнайте, как создать RESTful API с помощью Flask и Postgres, обеспечивающий беспрепятственный обмен данными между вашим приложением и внешними системами.

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

Хотя бэкенд-разработка включает в себя больше, чем просто написание API, она также охватывает написание бизнес-логики на стороне сервера, разработку эффективной системы. архитектуры и другие ключевые функции, читайте дальше, чтобы узнать, как создать простой CRUD REST API с помощью Flask (облегченная среда Python) и Postgres. база данных.

Использование Flask для создания серверных API

Колба легкий Фреймворк Python который предоставляет ряд функций для упрощения написания внутренних API-интерфейсов для веб-клиентов, написанных с использованием различных технологий, таких как React и Angular.

Вы можете найти исходный код этого проекта в этом Репозиторий GitHub.

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

Настроить базу данных Postgres

Для начала перейдите на СлонSQL, облачное решение для размещения баз данных, которое предоставляет платформу для создания и управления базами данных Postgres в облаке, регистрации и входа на страницу обзора вашей учетной записи.

Нажмите на Создать новый экземпляр кнопку, чтобы создать новый экземпляр для вашего приложения.

Укажите имя своего экземпляра и выберите бесплатный план и, наконец, выберите регион, в котором будет размещен экземпляр, чтобы завершить процесс установки.

После создания экземпляра перейдите на страницу настроек и скопируйте URL-адрес базы данных, вы будете использовать его для установления соединения с базой данных.

Настроить сервер Flask

На своем терминале создайте папку проекта и измените текущий каталог на эту новую папку.

Перед установкой Flask убедитесь, что на вашем компьютере используется Python версии 3.6+. Если нет, то необходимо установить последнюю Питон версия.

питон --версия

После этого установите виртуальная среда, чтобы создать изолированную виртуальную среду разработки.

пип установить виртуалэнв

Затем выполните приведенную ниже команду, чтобы создать виртуальную среду.

виртуальный

Наконец, активируйте виртуальную среду.

# В Windows: 
.\venv\скрипты\активировать
# В Unix или MacOS:
источник venv/bin/активировать

Установите необходимые пакеты

В корневом каталоге папки вашего проекта создайте требования.txt файл и добавьте эти пакеты.

колба
python-dotenv
psycopg2-двоичный

Далее устанавливаем пакеты.

pip install -r требования.txt

psycopg2-двоичный — это библиотека Python, которая выступает в качестве промежуточного программного обеспечения, позволяя вам устанавливать соединения с вашей базой данных Postgres и выполнять различные операции с базой данных.

Наконец, создайте .env файл и вставьте URL-адрес вашей базы данных.

DATABASE_URL= URL вашей базы данных

Создайте сервер Flask

Наконец, создайте app.py файл в корневом каталоге и добавьте приведенный ниже код.

Импортировать Операционные системы 
Импортировать psycopg2
от дотенв Импортировать load_dotenv
от колба Импортировать Фласк, запрос, jsonify

load_dotenv()

приложение = Фляга (__имя__)
URL-адрес = os.getenv ("URL_БАЗА_ДАННЫХ")
соединение = psycopg2.connect (url)

@приложение.получить("/")
дефдом():
возвращаться"Привет, мир"

Этот код устанавливает экземпляр приложения Flask. Затем он создает соединение с базой данных, указанной в строке URL-адреса, и, наконец, устанавливает домашний маршрут, который возвращает строку в качестве ответа.

Создайте REST API, поддерживающий операции CRUD

Теперь создайте REST API, реализующий четыре операции CRUD.

Создайте демонстрационную таблицу

Создайте пользовательскую таблицу в базе данных.

В файл app.py добавьте приведенный ниже код.

CREATE_USERS_TABLE = "СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ пользователей (id SERIAL PRIMARY KEY, имя TEXT);"

с связь:
с соединение.курсор() как курсор:
курсор.execute(CREATE_USERS_TABLE)

  • Этот код создает новую таблицу PostgreSQL с именем пользователи с двумя столбцами.
  • Он использует метод соединения psycopg2 для установления соединения с базой данных и создает новый объект курсора, используя соединение.курсор метод, который используется для выполнения SQL-запросы.

1. Определите метод POST

Создайте почтовый маршрут для добавления данных.

INSERT_USER_RETURN_ID = "ВСТАВИТЬ В пользователей (имя) ЗНАЧЕНИЯ (%s) ВОЗВРАЩАЕМЫЙ идентификатор;"
@app.route("/api/user", методы=["POST"])
дефСоздать пользователя():
данные = запрос.get_json()
имя = данные["имя"]
с связь:
с соединение.курсор() как курсор:
курсор.execute(INSERT_USER_RETURN_ID, (имя,))
user_id = курсор.fetchone () [0]
возвращаться {"идентификатор": ID пользователя, "имя": имя, "сообщение": f"Пользователь {имя} созданный."}, 201
  • Строка запроса SQL определяет оператор SQL, который будет выполняться с использованием курсор.execute метод для вставки новой строки с именем пользователя в пользователей таблица в базе данных. Он возвращает идентификатор вновь созданного пользователя.
  • Создать пользователя функция принимает имя в качестве параметра для хранения в базе данных, в то время как курсор.fetchone метод вызывается для получения идентификатора вновь созданного пользователя. Наконец, возвращается словарь, содержащий идентификатор и имя вновь созданного пользователя, а также сообщение о том, что пользователь был успешно создан.

2. Определите метод GET

Определите два маршрута получения: один для извлечения всех данных из базы данных и два для извлечения определенных данных из базы данных на основе идентификатора.

SELECT_ALL_USERS = "ВЫБЕРИТЕ * ОТ пользователей;"

@app.route("/api/user", методы=["GET"])
дефget_all_users():
с связь:
с соединение.курсор() как курсор:
курсор.execute(SELECT_ALL_USERS)
пользователи = курсор.fetchall()
если пользователи:
результат = []
для пользователь в пользователи:
результат.добавить({"идентификатор": пользователь[0], "имя": пользователь[1]})
возвращаться jsonify (результат)
еще:
возвращаться jsonify({"ошибка": f"Пользователи не найдены."}), 404

@app.route("/api/пользователь/", методы=["ПОЛУЧИТЬ"])
дефget_user(ID пользователя):
с связь:
с соединение.курсор() как курсор:
курсор.выполнить("ВЫБЕРИТЕ * ОТ пользователей, ГДЕ id = %s", (ID пользователя,))
пользователь = курсор.fetchone()
если пользователь:
возвращаться jsonify({"идентификатор": пользователь[0], "имя": пользователь[1]})
еще:
возвращаться jsonify({"ошибка": f"Пользователь с идентификатором {ID пользователя} не найдено."}), 404

  • Этот первый маршрут API обрабатывает HTTP-запросы GET для извлечения всех пользователей из базы данных. Он извлекает всех пользователей из базы данных и возвращает результаты в формате JSON в ответе.
  • Этот второй маршрут API обрабатывает HTTP-запросы GET для получения данных для конкретного пользователя из базы данных. Он занимает в ID пользователя в качестве параметра извлекает данные пользователя из базы данных и возвращает результаты в формате JSON в ответе.

3. Определите метод PUT

Создайте маршрут put для обновления сохраненных данных в базе данных.

@app.route("/api/пользователь/", методы=["PUT"])
дефupdate_user(ID пользователя):
данные = запрос.get_json()
имя = данные["имя"]
с связь:
с соединение.курсор() как курсор:
курсор.execute (UPDATE_USER_BY_ID, (имя, user_id))
если курсор.rowcount == 0:
возвращаться jsonify({"ошибка": f"Пользователь с идентификатором {ID пользователя} не найдено."}), 404
возвращаться jsonify({"идентификатор": ID пользователя, "имя": имя, "сообщение": f"Пользователь с идентификатором {ID пользователя} обновлено».})
  • update_user Функция принимает параметр идентификатора пользователя в качестве входных данных и использует его для обновления имени указанного пользователя в базе данных.
  • Если операция обновления прошла успешно, она возвращает объект JSON с обновленным идентификатором пользователя, именем и сообщением об успешном завершении в ответе.

4. Определите метод DELETE

Реализуйте маршрут удаления, чтобы удалить сохраненные данные определенного пользователя в базе данных.

@app.route("/api/пользователь/", методы=["УДАЛИТЬ"])
дефdelete_user(ID пользователя):
с связь:
с соединение.курсор() как курсор:
курсор.execute(DELETE_USER_BY_ID, (user_id,))
если курсор.rowcount == 0:
возвращаться jsonify({"ошибка": f"Пользователь с идентификатором {ID пользователя} не найдено."}), 404
возвращаться jsonify({"сообщение": f"Пользователь с идентификатором {ID пользователя} удален."})
  • Этот маршрут API обрабатывает функцию удаления определенного пользователя из базы данных на основе его идентификатора. Если пользователь не найден, он возвращает код состояния 404 с сообщением об ошибке. Однако, если операция удаления прошла успешно, она возвращает объект JSON с сообщением об успешном выполнении в ответе.

Написание REST API с помощью Flask

В этом руководстве показано, как использовать Flask и Postgres для создания простого CRUD REST API, а также как для установления соединения с базой данных и выполнения различных SQL-запросов для чтения и записи данных в база данных. Теперь вы можете создать простой REST API, который может обрабатывать четыре операции CRUD, необходимые в любом веб-приложении.

Независимо от того, создаете ли вы простой блог или сложное веб-приложение, Flask и Postgres предлагают мощные функции и возможности, необходимые для создания надежной серверной системы. В качестве альтернативы вы можете использовать другие технологии, такие как FastAPI и MongoDB, для создания RESTful API.