Python ve Flask ile RESTful API'ler Oluşturma

RESTful API'ler (Temsili Durum Transferi), ağ uygulamaları tasarlamak için popüler bir mimari stildir. Standart HTTP yöntemlerini kullanırlar ve genellikle ölçeklenebilir ve durumsuz web hizmetleri oluşturmak için kullanılırlar. Flask, basitliği ve esnekliği nedeniyle RESTful API'leri geliştirmek için ideal olan hafif bir Python web çerçevesidir.

Flask Ortamınızı Kurma

Bir RESTful API oluşturmadan önce Flask ortamınızı ayarlamanız gerekir. Bunu şu şekilde yapabilirsiniz:

  1. Flask'ı pip kullanarak yükleyin:
pip install flask

Flask kurulduktan sonra API'nizi geliştirmeye başlayabilirsiniz.

Basit bir Flask API'si Oluşturma

Temel CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemlerini gerçekleştirebilen basit bir RESTful API oluşturalım. İşte basit bir örnek:

from flask import Flask, jsonify, request

app = Flask(__name__)

# Sample data
tasks = [
    {'id': 1, 'title': 'Buy groceries', 'done': False},
    {'id': 2, 'title': 'Walk the dog', 'done': True}
]

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

@app.route('/tasks/', methods=['GET'])
def get_task(task_id):
    task = next((task for task in tasks if task['id'] == task_id), None)
    if task is None:
        return jsonify({'error': 'Task not found'}), 404
    return jsonify({'task': task})

@app.route('/tasks', methods=['POST'])
def create_task():
    new_task = request.get_json()
    tasks.append(new_task)
    return jsonify({'task': new_task}), 201

@app.route('/tasks/', methods=['PUT'])
def update_task(task_id):
    task = next((task for task in tasks if task['id'] == task_id), None)
    if task is None:
        return jsonify({'error': 'Task not found'}), 404
    data = request.get_json()
    task.update(data)
    return jsonify({'task': task})

@app.route('/tasks/', methods=['DELETE'])
def delete_task(task_id):
    global tasks
    tasks = [task for task in tasks if task['id'] != task_id]
    return jsonify({'result': 'Task deleted'})

if __name__ == '__main__':
    app.run(debug=True)

Bu örnekte:

  • /tasks (GET) tüm görevlerin listesini döndürür.
  • /tasks/<task_id> (GET), belirli bir görevi kimliğine göre döndürür.
  • /tasks (POST) yeni bir görev oluşturur.
  • /tasks/<task_id> (PUT) mevcut bir görevi kimliğine göre günceller.
  • /tasks/<task_id> (SİL) bir görevi kimliğine göre siler.

API'nizi test etme

Flask API'nizi test etmek için Postman gibi araçları veya curl gibi komut satırı araçlarını kullanabilirsiniz. Örneğin, görevleri almak için GET uç noktasını test etmek için şunları kullanabilirsiniz:

curl http://localhost:5000/tasks

Hataları ve İstisnaları Ele Alma

Sağlam API'ler için uygun hata işleme çok önemlidir. Flask'ta, özel hata işleyicileri tanımlayarak hataları işleyebilirsiniz. Örneğin, 404 hatalarını şu şekilde işleyebilirsiniz:

@app.errorhandler(404)
def not_found_error(error):
    return jsonify({'error': 'Not found'}), 404

Çözüm

Python ve Flask ile RESTful API'ler oluşturmak, ölçeklenebilir ve verimli web servislerini hızla oluşturmanıza olanak tanır. Bu kılavuzda özetlenen adımları izleyerek temel bir API kurabilir, çeşitli HTTP yöntemlerini işleyebilir ve hataları etkili bir şekilde yönetebilirsiniz. Flask'ın basitliği onu API'ler geliştirmek için mükemmel bir seçim haline getirir ve Flask'ın özelliklerini keşfetmeye devam ettikçe daha karmaşık ve özellik açısından zengin web servisleri oluşturabileceksiniz.