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

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

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

Използване на Flask за изграждане на Backend API

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

Можете да намерите изходния код на този проект тук GitHub хранилище.

Това ръководство ще ви преведе през писането на a

instagram viewer
REST API, който изпълнява четирите CRUD операции: създавайте, четете, актуализирайте и изтривайте, за да управлявате потребителски данни, съхранявани в база данни на Postgres.

Настройте база данни на Postgres

За да започнете, преминете към ElephantSQL, базирано на облак решение за хостинг на бази данни, което предоставя платформа за създаване и управление на бази данни на Postgres в облака, регистрирайте се и влезте в страницата за преглед на вашия акаунт.

Щракнете върху Създайте нов екземпляр бутон, за да създадете нов екземпляр за вашето приложение.

Въведете името на вашия екземпляр и изберете безплатния план и накрая изберете региона, където ще бъде хостван екземплярът, за да завършите процеса на настройка.

След като екземплярът бъде създаден, отворете страницата с настройки и копирайте URL на базата данни, ще го използвате, за да установите връзка с базата данни.

Настройте Flask сървър

На вашия терминал създайте папка на проекта и променете текущата директория на тази нова папка.

Преди да инсталирате Flask, потвърдете, че използвате Python версия 3.6+ на вашата машина. Ако не, трябва да инсталирате най-новата Python версия.

python --версия

След това инсталирайте virtualenv, за създаване на изолирана виртуална среда за разработка.

pip инсталирайте virtualenv

След това изпълнете командата по-долу, за да създадете виртуална среда.

virtualenv venv

Накрая активирайте виртуалната среда.

# В Windows: 
.\venv\Scripts\activate
# Под Unix или MacOS:
източник venv/bin/activate

Инсталирайте необходимите пакети

В главната директория на папката на вашия проект създайте a изисквания.txt файл и добавете тези пакети.

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

След това инсталирайте пакетите.

pip install -r requirements.txt

The psycopg2-двоичен е библиотека на Python, която действа като междинен софтуер, за да ви позволи да установявате връзки с вашата база данни на Postgres и да извършвате различни операции с база данни.

И накрая, създайте a .env файл и поставете URL адреса на вашата база данни.

DATABASE_URL= URL на вашата база данни

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

Накрая създайте app.py файл в основната директория и добавете кода по-долу.

импортиране операционна система 
импортиране psycopg2
от dotenv импортиране load_dotenv
от колба импортиране Колба, заявка, jsonify

load_dotenv()

приложение = Колба (__име__)
url = os.getenv(„DATABASE_URL“)
връзка = psycopg2.connect (url)

@app.get("/")
дефУ дома():
връщане"Здравей свят"

Този код настройва екземпляр на приложението Flask. След това създава връзка към базата данни, посочена в URL низа, и накрая настройва начален маршрут, който връща низ като отговор.

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

Сега изградете REST API, който изпълнява четирите CRUD операции.

Създайте демонстрационна маса

Създайте потребителска таблица в базата данни.

Във файла app.py добавете кода по-долу.

CREATE_USERS_TABLE = "СЪЗДАВАНЕ НА ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА потребители (id SERIAL PRIMARY KEY, име TEXT);"

с Връзка:
с връзка.курсор() като курсор:
cursor.execute (CREATE_USERS_TABLE)

  • Този код създава нова таблица на PostgreSQL, наречена потребители с две колони.
  • Той използва метода за свързване psycopg2, за да установи връзка с базата данни и създава нов обект на курсора, използвайки връзка.курсор метод, който се използва за изпълнение SQL заявки.

1. Дефинирайте метода POST

Създайте маршрута за публикация, за да добавите данни.

INSERT_USER_RETURN_ID = "INSERT INTO потребители (име) VALUES (%s) RETURNING id;"
@app.route("/api/user", methods=["POST"])
дефcreate_user():
данни = request.get_json()
име = данни["име"]
с Връзка:
с връзка.курсор() като курсор:
cursor.execute (INSERT_USER_RETURN_ID, (име,))
user_id = cursor.fetchone()[0]
връщане {"документ за самоличност": user_id, "име": име, "съобщение": f"Потребител {име} създаден."}, 201
  • Низът на SQL заявката дефинира SQL израз, който ще бъде изпълнен с помощта на cursor.execute метод за вмъкване на нов ред с име на потребител в на потребителите таблица в базата данни. Връща новосъздадения потребителски идентификатор.
  • The create_user функцията приема име като параметър за съхраняване в базата данни, докато cursor.fetchone се извиква метод за извличане на новосъздадения потребителски идентификатор. Накрая се връща речник, съдържащ ID и име на новосъздадения потребител, заедно със съобщение, което показва, че потребителят е създаден успешно.

2. Дефинирайте метода GET

Дефинирайте два маршрута за получаване: един, за извличане на всички данни в базата данни, и два, за извличане на конкретни данни от базата данни въз основа на идентификатора.

SELECT_ALL_USERS = "ИЗБЕРЕТЕ * ОТ потребители;"

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

@app.route("/api/потребител/", methods=["GET"])
дефget_user(user_id):
с Връзка:
с връзка.курсор() като курсор:
cursor.execute("SELECT * FROM потребители WHERE id = %s", (user_id,))
потребител = cursor.fetchone()
ако потребител:
връщане jsonify({"документ за самоличност": потребител [0], "име": потребител [1]})
друго:
връщане jsonify({"грешка": f"Потребител с ID {user_id} не е намерено."}), 404

  • Този първи API маршрут обработва HTTP GET заявки за извличане на всички потребители от базата данни. Той извлича всички потребители от базата данни и връща резултатите във формат JSON в отговора.
  • Този втори API маршрут обработва HTTP GET заявки за извличане на данни за конкретен потребител от базата данни. Отнема в потребителско име като параметър извлича данните на потребителя от базата данни и връща резултатите във формат JSON в отговора.

3. Дефинирайте метода PUT

Създайте пътния маршрут за актуализиране на съхранените данни в базата данни.

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

4. Дефинирайте метода DELETE

Приложете маршрута за изтриване, за да изтриете съхранените данни на конкретен потребител в базата данни.

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

Писане на REST API с Flask

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

Независимо дали създавате прост блог или сложно уеб приложение, Flask и Postgres предлагат мощни функции и възможности, необходими за създаване на стабилна бекенд система. Като алтернатива можете да използвате други технологии като FastAPI и MongoDB за изграждане на RESTful API.