Bottle – إطار عمل مصغر لبناء واجهات API

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Bottle: دليل شامل لإطار العمل المصغر في Python

مقدمة عن Bottle

Bottle هو إطار عمل مصغر وبسيط بلغة Python لإنشاء تطبيقات الويب و REST API. الإطار بأكمله مكتوب في ملف واحد بحجم أقل من 100 كيلوبايت، مما يجعله حلاً مثالياً للمشاريع الصغيرة والنماذج الأولية والأنظمة المدمجة والخدمات المصغرة. يوفر Bottle جميع المكونات اللازمة لتشغيل تطبيق ويب كامل دون أي تبعيات خارجية.

مميزات وفوائد Bottle

خفيف الوزن وسهل الاستخدام

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

إمكانيات مدمجة

  • خادم HTTP مدمج للتطوير
  • محرك القوالب الخاص SimpleTemplate Engine
  • دعم WSGI للنشر في بيئة الإنتاج
  • التعرف التلقائي على أنواع معاملات المسارات
  • معالجة JSON والنماذج والملفات وملفات تعريف الارتباط

مرونة في البنية

Bottle متوافق مع أي مكتبات Python للتعامل مع قواعد البيانات ومحركات القوالب وخوادم WSGI. هذا يسمح بدمجه بسهولة في الأنظمة الحالية.

التثبيت والإعداد الأساسي

تثبيت Bottle

pip install bottle

إنشاء أول تطبيق

قم بإنشاء ملف app.py:

from bottle import route, run

@route('/')
def index():
    return "مرحباً من Bottle!"

@route('/hello/<name>')
def greet(name):
    return f"مرحباً، {name}!"

if __name__ == "__main__":
    run(host='localhost', port=8080, debug=True)

تشغيل التطبيق

python app.py

سيكون التطبيق متاحاً على الرابط http://localhost:8080

التوجيه ومعالجة الطلبات

المسارات الأساسية

from bottle import route, get, post, put, delete

@route('/')
def home():
    return "الصفحة الرئيسية"

@get('/users')
def get_users():
    return "قائمة المستخدمين"

@post('/users')
def create_user():
    return "إنشاء مستخدم جديد"

@put('/users/<id:int>')
def update_user(id):
    return f"تحديث المستخدم {id}"

@delete('/users/<id:int>')
def delete_user(id):
    return f"حذف المستخدم {id}"

معاملات المسارات

يدعم Bottle أنواعاً مختلفة من المعاملات:

@route('/user/<id:int>')
def user_by_id(id):
    return f"معرف المستخدم: {id}"

@route('/article/<slug:path>')
def article_by_slug(slug):
    return f"المقال: {slug}"

@route('/price/<amount:float>')
def price(amount):
    return f"السعر: {amount}"

@route('/profile/<username:re:[a-zA-Z0-9_]+>')
def profile(username):
    return f"الملف الشخصي: {username}"

معالجة معاملات الاستعلام

from bottle import request

@route('/search')
def search():
    query = request.query.get('q', '')
    category = request.query.get('category', 'all')
    return f"البحث عن '{query}' في الفئة '{category}'"

التعامل مع بيانات الطلب

معالجة النماذج

from bottle import request, post

@post('/submit')
def submit_form():
    name = request.forms.get('name')
    email = request.forms.get('email')
    age = request.forms.get('age', type=int)
    
    return f"تم استلام البيانات: {name}, {email}, {age}"

التعامل مع JSON

from bottle import request, response

@post('/api/data')
def handle_json():
    data = request.json
    
    # معالجة البيانات
    result = {
        'status': 'success',
        'received': data,
        'message': 'تم استلام البيانات بنجاح'
    }
    
    response.content_type = 'application/json'
    return result

توصيات