مرحبًا متحمسي التقنية! إذا كنت هنا، فمن المحتمل أنك فضولي حول كيفية استغلال قوة GraphQL باستخدام Python. حسنًا، لقد جئت إلى المكان المناسب. اليوم، سنغوص في عالم GraphQL وPython المثير، مستكشفين كيفية عمل هذين الاثنين معًا لبناء واجهات برمجة تطبيقات فعالة وقوية. على طول الطريق، سنقدم لكم أداة رائعة تسمى Apidog التي يمكن أن تجعل رحلتك في التطوير أكثر سلاسة.
ما هو GraphQL؟
دعونا نوضح أولاً ما هو GraphQL. ببساطة، GraphQL هو لغة استعلام لواجهة برمجة التطبيقات الخاصة بك، ووقت تشغيل لتنفيذ تلك الاستعلامات باستخدام نظام نوع تقوم بتحديده لبياناتك. بخلاف REST، حيث يتعين عليك إجراء طلبات متعددة إلى نقاط نهاية مختلفة لجلب البيانات ذات الصلة، يتيح لك GraphQL الحصول على جميع المعلومات التي تحتاجها في طلب واحد. يمكن أن يقلل هذا بشكل كبير من كمية نقل البيانات ويحسن كفاءة تطبيقاتك.

لماذا تختار GraphQL على REST؟
قد تتساءل، لماذا يجب أن أختار GraphQL على واجهة برمجة التطبيقات التقليدية REST؟ إليك بعض الأسباب المقنعة:
- استعلامات مرنة: مع GraphQL، يمكنك طلب بالضبط البيانات التي تحتاجها، لا أكثر ولا أقل.
- تحميل بيانات فعال: يساعد في جلب الموارد المتداخلة في طلب واحد.
- مخطط محدد بشكل قوي: يستخدم GraphQL نظام نوع لوصف قدرات واجهة برمجة التطبيقات، مما يساعد في التحقق من صحة الاستعلامات وتجنب الأخطاء الشائعة.
- استكشاف المعلومات: واجهات برمجة التطبيقات GraphQL توثق ذاتيًا، مما يعني أن المطورين يمكنهم استعلام واجهة برمجة التطبيقات نفسها لفهم العمليات المدعومة.
إعداد GraphQL مع Python
الآن، دعونا نبدأ العمل ونتدرب على بعض الأكواد. سنستخدم مكتبة graphene، وهي أداة قوية لبناء واجهات برمجة تطبيقات GraphQL في Python.
الخطوة 1: تثبيت الحزم المطلوبة
أولاً، تحتاج إلى تثبيت الحزم الضرورية. افتح المحطة الخاصة بك وقم بتشغيل:
pip install graphene
pip install flask
pip install flask-graphql
الخطوة 2: إنشاء خادم GraphQL بسيط
دعونا نخلق خادم GraphQL بسيط باستخدام Flask وGraphene. أنشئ ملفًا باسم app.py وأضف الكود التالي:
from flask import Flask
from flask_graphql import GraphQLView
import graphene
# تعريف استعلام بسيط
class Query(graphene.ObjectType):
hello = graphene.String(name=graphene.String(default_value="غريب"))
def resolve_hello(self, info, name):
return f'مرحبًا {name}!'
schema = graphene.Schema(query=Query)
app = Flask(__name__)
app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True))
if __name__ == '__main__':
app.run(debug=True)
يفعل هذا الكود إعداد خادم GraphQL بسيط مع استعلام واحد يعيد رسالة ترحيب. يمكنك تشغيل الخادم عن طريق تنفيذ:
python app.py
افتح متصفحك وانتقل إلى http://localhost:5000/graphql. سترى واجهة GraphiQL حيث يمكنك تشغيل استعلامات GraphQL الخاصة بك.
الخطوة 3: توسيع المخطط بأنواع ومحللات أكثر
دعونا نوسع مخططنا ليشمل أنواعًا ومحللات أكثر تعقيدًا. تخيل أنك تبني واجهة برمجة تطبيقات مدونة. ستحتاج إلى أنواع لـ User، Post، و Comment.
class User(graphene.ObjectType):
id = graphene.ID()
username = graphene.String()
email = graphene.String()
class Post(graphene.ObjectType):
id = graphene.ID()
title = graphene.String()
content = graphene.String()
author = graphene.Field(User)
class Comment(graphene.ObjectType):
id = graphene.ID()
content = graphene.String()
author = graphene.Field(User)
post = graphene.Field(Post)
class Query(graphene.ObjectType):
hello = graphene.String(name=graphene.String(default_value="غريب"))
users = graphene.List(User)
posts = graphene.List(Post)
def resolve_hello(self, info, name):
return f'مرحبًا {name}!'
def resolve_users(self, info):
return [
User(id="1", username="john_doe", email="john@example.com"),
User(id="2", username="jane_doe", email="jane@example.com")
]
def resolve_posts(self, info):
return [
Post(id="1", title="المشاركة الأولى", content="هذه هي مشاركتي الأولى", author=User(id="1", username="john_doe", email="john@example.com")),
Post(id="2", title="المشاركة الثانية", content="هذه هي مشاركتي الثانية", author=User(id="2", username="jane_doe", email="jane@example.com"))
]
schema = graphene.Schema(query=Query)
اختبار وتصحيح باستخدام Apidog
عندما يتعلق الأمر باختبار وتصحيح واجهة برمجة التطبيقات GraphQL الخاصة بك، تحتاج إلى أداة قوية. هنا يأتي دور Apidog. Apidog هي أداة قوية لتطوير واجهات برمجة التطبيقات تساعدك في تصميم واختبار وتوثيق واجهات برمجة التطبيقات بكفاءة. مع واجهته سهلة الاستخدام وميزاته المتقدمة، يعمل Apidog على تبسيط دورة حياة واجهة برمجة التطبيقات بأكملها.

لماذا تستخدم Apidog؟
- سهولة الاستخدام: تجعل واجهة Apidog سهلة الاستخدام من السهل إنشاء وإدارة واجهات برمجة التطبيقات.
- اختبار شامل: يقدم إمكانيات اختبار متقدمة لضمان عمل واجهات برمجة التطبيقات كما هو متوقع.
- توثيق مفصل: يقوم Apidog تلقائيًا بإنشاء توثيق مفصل لواجهات برمجة التطبيقات الخاصة بك.
- ميزات تعاونية: يسمح لعدة أعضاء فريق بالتعاون في تطوير واختبار واجهة برمجة التطبيقات.
بدء استخدام Apidog
قم بتحميل Apidog مجانًا من الموقع الرسمي. بمجرد تثبيته، اتبع هذه الخطوات لبدء استخدامه مع واجهة برمجة التطبيقات GraphQL الخاصة بك:
لإنشاء طلب GraphQL جديد في مشروع، انقر على "Body" → "GraphQL" بالتسلسل.

أدخل استعلامك في خانة الاستعلام في علامة "تشغيل". يمكنك أيضًا النقر على زر Fetch Schema اليدوي في خانة الإدخال لتمكين ميزة "إكمال الكود" لتعبيرات الاستعلام، مما يساعد في إدخال عبارات الاستعلام.

تدعم عبارات الاستعلام استخدام متغيرات GraphQL في الطلب. للاستخدام المحدد، يرجى الرجوع إلى صيغة GraphQL.

ميزات GraphQL المتقدمة
يقدم GraphQL العديد من الميزات المتقدمة التي يمكن أن تعزز تجربة تطوير واجهة برمجة التطبيقات الخاصة بك. دعونا نستكشف بعضًا منها:
التغييرات
بالإضافة إلى استعلام البيانات، يمكنك أيضًا تعديل البيانات باستخدام تغييرات GraphQL. دعونا نضيف تغييرًا لإنشاء منشور جديد.
class CreatePost(graphene.Mutation):
class Arguments:
title = graphene.String(required=True)
content = graphene.String(required=True)
author_id = graphene.ID(required=True)
post = graphene.Field(lambda: Post)
def mutate(self, info, title, content, author_id):
author = User(id=author_id, username="john_doe", email="john@example.com")
post = Post(id="3", title=title, content=content, author=author)
return CreatePost(post=post)
class Mutation(graphene.ObjectType):
create_post = CreatePost.Field()
schema = graphene.Schema(query=Query, mutation=Mutation)
الاشتراكات
تسمح لك اشتراكات GraphQL بالاستماع إلى التحديثات الحية. هذه مفيدة بشكل خاص للتطبيقات التي تتطلب تحديثات مباشرة، مثل تطبيقات الدردشة أو نتائج الرياضات الحية.
import asyncio
import graphene
import websockets
from graphql import GraphQLError
class Message(graphene.ObjectType):
content = graphene.String()
author = graphene.String()
class Subscription(graphene.ObjectType):
message_sent = graphene.Field(Message)
async def subscribe_message_sent(root, info):
while True:
message = await get_new_message()
yield {"message_sent": message}
async def get_new_message():
# محاكاة استلام رسالة جديدة
await asyncio.sleep(2)
return Message(content="مرحبًا، عالم!", author="john_doe")
schema = graphene.Schema(query=Query, mutation=Mutation, subscription=Subscription)
اعتبارات الأمان
عند بناء واجهات برمجة التطبيقات، يجب أن تكون الأمان دائمًا في المقام الأول. إليك بعض الممارسات الجيدة لتأمين واجهات برمجة التطبيقات GraphQL الخاصة بك:
- تحديد معدل الاستخدام: نفذ تحديد معدل الاستخدام لمنع استغلال واجهة برمجة التطبيقات الخاصة بك.
- المصادقة والتفويض: تأكد من أن المستخدمين المصرح لهم فقط يمكنهم الوصول إلى أجزاء معينة من واجهة برمجة التطبيقات الخاصة بك.
- التحقق من صحة المدخلات: تحقق من جميع المدخلات لمنع هجمات الإفساد.
- التسجيل والمراقبة: تابع جميع طلبات واجهة برمجة التطبيقات ورصد الأنشطة المشبوهة.
الخاتمة
تعتبر GraphQL وPython مزيجًا قويًا لبناء واجهات برمجة تطبيقات فعالة ومرنة. بمساعدة مكتبات مثل Graphene وأدوات مثل Apidog، يمكنك تبسيط عملية التطوير لديك وبناء واجهات برمجة تطبيقات قوية تلبي احتياجاتك المحددة. سواء كنت تبني واجهة برمجة تطبيقات مدونة بسيطة أو تطبيقًا معقدًا يتم تحديثه في الوقت الحقيقي، ستساعدك المبادئ والتقنيات التي تمت مناقشتها في هذا الدليل على البدء بشكل صحيح.
إذاً، ما الذي تنتظره؟ اغمر في عالم GraphQL مع Python، ولا تنسَ تحميل Apidog مجانًا لجعل رحلتك في التطوير أكثر سلاسة. برمجة سعيدة!
