تعرف على كيفية إنشاء واجهة برمجة تطبيقات RESTful باستخدام Flask و Postgres ، مما يسمح بتبادل سلس للبيانات بين تطبيقك والأنظمة الخارجية.

تعد واجهات برمجة التطبيقات (APIs) جزءًا مهمًا من بناء وتوصيل أنظمة مختلفة ، مما يسمح لتطبيقاتك بالاتصال وتبادل البيانات مع الخدمات الأخرى.

بينما يتضمن تطوير الواجهة الخلفية أكثر من مجرد كتابة واجهات برمجة التطبيقات - فهو يغطي أيضًا كتابة منطق الأعمال من جانب الخادم وتصميم نظام فعال المعماريات والوظائف الرئيسية الأخرى ، اقرأ لتتعلم كيفية إنشاء واجهة برمجة تطبيقات CRUD REST بسيطة مع Flask (إطار عمل Python خفيف الوزن) و Postgres قاعدة البيانات.

استخدام Flask لبناء واجهات برمجة التطبيقات الخلفية

قارورة خفيف الوزن إطار بايثون يوفر عددًا من الميزات لتبسيط واجهات برمجة التطبيقات الخلفية للكتابة لعملاء الويب المكتوبة باستخدام تقنيات مختلفة مثل React و Angular.

يمكنك العثور على الكود المصدري لهذا المشروع في هذا مستودع جيثب.

سيرشدك هذا الدليل خلال كتابة ملف واجهة برمجة تطبيقات REST التي تنفذ عمليات CRUD الأربعة: إنشاء وقراءة وتحديث وحذف لإدارة بيانات المستخدم المخزنة في قاعدة بيانات Postgres.

instagram viewer

إنشاء قاعدة بيانات Postgres

للبدء ، توجه إلى الفيل، وهو حل استضافة قاعدة بيانات قائم على السحابة يوفر نظامًا أساسيًا لإنشاء قواعد بيانات Postgres وإدارتها على السحابة ، والتسجيل ، وتسجيل الدخول إلى صفحة نظرة عامة على حسابك.

انقر على إنشاء مثيل جديد زر لإنشاء مثيل جديد للتطبيق الخاص بك.

أدخل اسم المثيل الخاص بك وحدد الخطة المجانية ، وأخيراً حدد المنطقة التي سيتم استضافة المثيل فيها لإنهاء عملية الإعداد.

بمجرد إنشاء المثيل ، انتقل إلى صفحة الإعدادات وانسخ ملف URL قاعدة البيانات، ستستخدمه لإنشاء اتصال بقاعدة البيانات.

قم بإعداد خادم Flask

على الجهاز الطرفي ، قم بإنشاء مجلد مشروع ، وقم بتغيير الدليل الحالي إلى هذا المجلد الجديد.

قبل تثبيت Flask ، تأكد من أنك تقوم بتشغيل Python الإصدار 3.6+ على جهازك. إذا لم يكن كذلك ، فأنت بحاجة إلى تثبيت أحدث بايثون إصدار.

بيثون - الإصدار

بعد ذلك ، قم بتثبيت فيرتالينف، لإنشاء بيئة تطوير افتراضية معزولة.

نقطة تثبيت virtualenv

بعد ذلك ، قم بتشغيل الأمر أدناه لإنشاء بيئة افتراضية.

Virtualenv venv

أخيرًا ، قم بتنشيط البيئة الافتراضية.

# على نظام Windows: 
. \ venv \ Scripts \ تفعيل
# على نظام التشغيل Unix أو MacOS:
مصدر venv / بن / تفعيل

قم بتثبيت الحزم المطلوبة

في الدليل الجذر لمجلد مشروعك ، قم بإنشاء ملف المتطلبات. txt ملف وإضافة هذه الحزم.

قارورة
بيثون دوتنف
psycopg2- ثنائي

بعد ذلك ، قم بتثبيت الحزم.

Pip install- متطلبات rtxt

ال psycopg2- ثنائي هي مكتبة Python تعمل كبرنامج وسيط ، للسماح لك بإنشاء اتصالات مع قاعدة بيانات Postgres الخاصة بك وتنفيذ عمليات قاعدة بيانات مختلفة.

أخيرًا ، قم بإنشاء ملف .env ملف ولصق عنوان URL لقاعدة البيانات الخاصة بك.

DATABASE_URL = عنوان URL لقاعدة البيانات الخاصة بك

قم بإنشاء Flask Server

أخيرًا ، قم بإنشاء ملف app.py ملف في الدليل الجذر ، وأضف الكود أدناه.

يستورد نظام التشغيل 
يستورد psycopg2
من دوتنف يستورد تحميل
من قارورة يستورد قارورة ، طلب ، jsonify

load_dotenv ()

التطبيق = قارورة (__name__)
url = os.getenv ("DATABASE_URL")
اتصال = psycopg2.connect (url)

@ app.get ("/")
defبيت():
يعود"مرحبا بالعالم"

يقوم هذا الرمز بإعداد مثيل لتطبيق Flask. ثم يقوم بإنشاء اتصال بقاعدة البيانات المحددة في سلسلة عنوان URL ، وأخيرًا ، يقوم بإعداد مسار رئيسي يقوم بإرجاع سلسلة كاستجابة.

قم بإنشاء REST API لتمكين عمليات CRUD

الآن ، قم ببناء واجهة برمجة تطبيقات REST التي تنفذ عمليات CRUD الأربعة.

قم بإنشاء جدول تجريبي

قم بإنشاء جدول مستخدم داخل قاعدة البيانات.

في ملف app.py ، أضف الكود أدناه.

CREATE_USERS_TABLE = "إنشاء جدول في حالة عدم وجود مستخدمين خارجيين (معرف SERIAL PRIMARY KEY ، اسم TEXT) ؛"

مع اتصال:
مع connect.cursor () مثل المؤشر:
cursor.execute (CREATE_USERS_TABLE)

  • ينشئ هذا الرمز جدول PostgreSQL جديدًا يسمى المستخدمين مع عمودين.
  • يستخدم طريقة الاتصال psycopg2 لإنشاء اتصال بقاعدة البيانات وإنشاء كائن مؤشر جديد باستخدام اتصال الطريقة المستخدمة للتنفيذ استعلامات SQL.

1. حدد طريقة POST

قم بإنشاء مسار النشر لإضافة البيانات.

INSERT_USER_RETURN_ID = "INSERT INTO users (name) VALUES (٪ s) RETURNING id؛"
@ app.route ("/ api / user"، طرق = ["POST"])
defcreate_user():
data = request.get_json ()
الاسم = البيانات ["اسم"]
مع اتصال:
مع connect.cursor () مثل المؤشر:
cursor.execute (INSERT_USER_RETURN_ID، (name،))
user_id = cursor.fetchone () [0]
يعود {"بطاقة تعريف": معرف المستخدم، "اسم": اسم، "رسالة": و "المستخدم {اسم} مخلوق."}, 201
  • تحدد سلسلة استعلام SQL جملة SQL التي سيتم تنفيذها باستخدام الامتداد cursor.execute طريقة لإدراج صف جديد باسم المستخدم في ملف المستخدمين الجدول في قاعدة البيانات. تقوم بإرجاع معرف المستخدم الذي تم إنشاؤه حديثًا.
  • ال create_user تأخذ الوظيفة اسمًا كمعامل لتخزينها في قاعدة البيانات أثناء وجود ملف cursor.fetchone يتم استدعاء الأسلوب لاسترداد معرف المستخدم الذي تم إنشاؤه حديثًا. أخيرًا ، يتم إرجاع قاموس يحتوي على معرف المستخدم الذي تم إنشاؤه حديثًا واسمه ، إلى جانب رسالة تشير إلى أن المستخدم قد تم إنشاؤه بنجاح.

2. حدد طريقة GET

حدد مسارين get: أحدهما لاسترداد جميع البيانات الموجودة في قاعدة البيانات ، والآخر لاسترداد بيانات محددة من قاعدة البيانات بناءً على المعرف.

SELECT_ALL_USERS = "حدد * من المستخدمين ؛"

@ app.route ("/ api / user"، طرق = ["GET"])
defget_all_users():
مع اتصال:
مع connect.cursor () مثل المؤشر:
cursor.execute (SELECT_ALL_USERS)
المستخدمون = cursor.fetchall ()
لو المستخدمون:
النتيجة = []
ل مستخدم في المستخدمون:
result.append ({"بطاقة تعريف": مستخدم[0], "اسم": مستخدم[1]})
يعود jsonify (نتيجة)
آخر:
يعود jsonify ({"خطأ": و "لم يتم العثور على المستخدمين."}), 404

@ app.route ("/ api / user /"، الأساليب = [" GET "])
defget_user(معرف المستخدم):
مع اتصال:
مع connect.cursor () مثل المؤشر:
cursor.execute ("حدد * من المستخدمين حيث المعرف =٪ s"، (معرف المستخدم،))
المستخدم = cursor.fetchone ()
لو مستخدم:
يعود jsonify ({"بطاقة تعريف": مستخدم[0], "اسم": مستخدم[1]})
آخر:
يعود jsonify ({"خطأ": f "مستخدم مع معرف {معرف المستخدم} غير معثور عليه."}), 404

  • يعالج مسار API الأول طلبات HTTP GET لاسترداد جميع المستخدمين من قاعدة البيانات. يقوم باسترداد جميع المستخدمين من قاعدة البيانات وإرجاع النتائج بتنسيق JSON في الاستجابة.
  • يعالج مسار API الثاني طلبات HTTP GET لاسترداد البيانات لمستخدم معين من قاعدة البيانات. يأخذ في معرف المستخدم كمعامل ، يسترد بيانات المستخدم من قاعدة البيانات ، ويعيد النتائج بتنسيق JSON في الاستجابة.

3. حدد طريقة PUT

قم بإنشاء مسار الوضع لتحديث البيانات المخزنة في قاعدة البيانات.

@ app.route ("/ api / user /"، الأساليب = [" PUT "])
defupdate_user(معرف المستخدم):
data = request.get_json ()
الاسم = البيانات ["اسم"]
مع اتصال:
مع connect.cursor () مثل المؤشر:
cursor.execute (UPDATE_USER_BY_ID، (name، user_id))
لو cursor.rowcount == 0:
يعود jsonify ({"خطأ": f "مستخدم مع معرف {معرف المستخدم} غير معثور عليه."}), 404
يعود jsonify ({"بطاقة تعريف": معرف المستخدم، "اسم": اسم، "رسالة": f "مستخدم مع معرف {معرف المستخدم} محدث."})
  • ال update_user تأخذ الوظيفة معلمة معرف المستخدم كمدخلات وتستخدمها لتحديث اسم المستخدم المحدد في قاعدة البيانات.
  • إذا نجحت عملية التحديث ، فإنها تُرجع كائن JSON بهوية المستخدم المحدثة والاسم ورسالة النجاح في الاستجابة.

4. حدد طريقة الحذف

قم بتنفيذ مسار الحذف لحذف البيانات المخزنة لمستخدم معين في قاعدة البيانات.

@ app.route ("/ api / user /"، الأساليب = [" حذف "])
defمسح المستخدم(معرف المستخدم):
مع اتصال:
مع connect.cursor () مثل المؤشر:
cursor.execute (DELETE_USER_BY_ID، (user_id،))
لو cursor.rowcount == 0:
يعود jsonify ({"خطأ": f "مستخدم مع معرف {معرف المستخدم} غير معثور عليه."}), 404
يعود jsonify ({"رسالة": f "مستخدم مع معرف {معرف المستخدم} تم الحذف."})
  • يتعامل مسار واجهة برمجة التطبيقات هذا مع وظيفة الحذف لمستخدم معين من قاعدة البيانات بناءً على المعرف الخاص به. إذا لم يتم العثور على المستخدم ، فإنه يقوم بإرجاع رمز الحالة 404 مع رسالة خطأ. ومع ذلك ، إذا نجحت عملية الحذف ، فإنها ترجع كائن JSON برسالة نجاح في الاستجابة.

كتابة REST APIs مع Flask

يوضح هذا الدليل كيفية استخدام Flask و Postgres لإنشاء واجهة برمجة تطبيقات CRUD REST بسيطة جنبًا إلى جنب ، وكيف لإنشاء اتصال قاعدة بيانات وتنفيذ استعلامات SQL مختلفة لقراءة البيانات وكتابتها إلى ملف قاعدة البيانات. يمكنك الآن إنشاء واجهة برمجة تطبيقات REST بسيطة يمكنها التعامل مع عمليات CRUD الأربعة المطلوبة في أي تطبيق ويب.

سواء كنت تقوم ببناء مدونة بسيطة أو تطبيق ويب معقد ، فإن Flask و Postgres يقدمان ميزات وقدرات قوية مطلوبة لإنشاء نظام خلفية قوي. بدلاً من ذلك ، يمكنك الاستفادة من تقنيات أخرى مثل FastAPI و MongoDB لبناء RESTful APIs.