Python ile REST API Sunucusu Oluşturma

Giriş

REST (Representational State Transfer) API’leri, modern uygulama geliştirme süreçlerinde sıkça tercih edilmektedir. Yalnızca veri paylaşımını değil, farklı sistemlerin birbirleriyle etkileşimini kolaylaştırarak uygulamaların ölçeklenebilirliğini artırır. Python, basit ve anlaşılır yapısı sayesinde REST API’leri oluşturmak için mükemmel bir dil seçeneğidir. Bu yazıda, Python belgelendirmesinden faydalanarak adım adım bir REST API nasıl oluşturulacağını öğreneceksiniz.

REST API Nedir?

REST API, web servislerinin bir standardıdır ve HTTP protokolünü kullanarak istemci ile sunucu arasında veri iletimini sağlar. REST mimarisi, kaynakların URI (Uniform Resource Identifier) ile temsil edilmesine dayanmaktadır ve bu kaynaklara erişim için HTTP metotlarından (GET, POST, PUT, DELETE gibi) yararlanılır. REST API’ler, istemcilerin çeşitli istemci uygulamaları veya web tarayıcıları üzerinden veri almasını ve bu verileri yönetebilmesini sağlar.

REST API’lerinin temel özellikleri şunlardır:

  • Stateless: Her istekte sunucu, istemci durumunu tutmaz. Her istek bağımsızdır ve gerekli tüm bilgileri içermelidir.
  • Cacheable: İstemci ve sunucu arasındaki iletişim, önbellekleme mekanizmaları ile hızlandırılabilir.
  • Layered System: REST API’leri, istemci ve sunucu arasında farklı katmanların bulunmasına izin verir. Bu, mimarinin daha modüler olmasını sağlar.

Python ile REST API Oluşturma

Python’da REST API geliştirmek için başlıca kullanılan kütüphaneler Flask ve Django’dur. Flask, minimal bir framework sayesinde hızlı bir şekilde API geliştirme sürecini kolaylaştırırken, Django ise daha kapsamlı uygulamalar için sağlam bir altyapı sunar. Bu yazıda, Flask kullanarak nasıl basit bir REST API oluşturabileceğimizi öğreneceğiz.

Flask Kurulumu

İlk adım olarak Flask kütüphanesini kurmalıyız. Eğer daha önce Python kurulumunu gerçekleştirdiyseniz, pip aracını kullanarak Flask’ı kolayca kurabilirsiniz. Aşağıdaki komutu terminal veya komut istemcisine yazarak Flask’ı kurabilirsiniz:

pip install Flask

Kurulum başarılı bir şekilde gerçekleştiğinde, yeni bir Python dosyası oluşturarak geliştirmeye başlayabiliriz. Örneğin, app.py adında bir dosya oluşturabiliriz.

İlk API Endpoint’ini Oluşturma

Artık Flask’ı kurduğumuza göre, basit bir API endpoint’i oluşturalım. Bu endpoint, temel bir “Hello World” mesajı döndürecektir. Aşağıdaki kod parçacığını app.py dosyasına ekleyin:

from flask import Flask

app = Flask(__name__)

@app.route('/api/hello', methods=['GET'])
def hello():
    return {'message': 'Hello, World!'}

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

Yukarıdaki kodda, Flask uygulamasını başlatıyoruz ve /api/hello endpoint’ini tanımlıyoruz. Eğer tarayıcı üzerinden bu URL’yi ziyaret ederseniz,JSON biçiminde bir mesaj döndürecektir.

HTTP Metotları ile Çalışma

REST API geliştirirken en önemli kısım, çeşitli HTTP metotlarını kullanarak farklı işlemler yapmaktır. Flask, bu metotları kolayca yönetmemize olanak sağlar. Örneğin, kullanıcıdan veri almak için POST metodunu kullanabiliriz. Aşağıda bir kullanıcının verisini kaydeden basit bir örnek gösterilmektedir:

from flask import Flask, request

app = Flask(__name__)

users = []

@app.route('/api/users', methods=['POST'])
def create_user():
    user = request.get_json()
    users.append(user)
    return {'message': 'User created!', 'user': user}, 201

Yukarıdaki kod ile birlikte users adında basit bir liste oluşturduk. Kullanıcıdan gelen JSON veriyi alıp bu listeye ekleyen bir endpoint tanımladık. Bu durumda, POST /api/users isteği yapıldığında kullanıcının bilgilerini alacak ve başarı mesajı döndürecektir.

Veri Yönetimi

Gerçek bir API uygulamasında veri yönetimi genellikle veri tabanları ile sağlanır. Flask uygulamalarında veri tabanı olarak SQLite, PostgreSQL veya MySQL gibi birçok seçenek bulunsa da, küçük projeler için SQLite yeterli olabilir. Flask-SQLAlchemy kütüphanesini kullanarak veri tabanımızı hızlıca kurabiliriz.

Flask-SQLAlchemy Kurulumu

Öncelikle, Flask-SQLAlchemy kütüphanesini kurmalıyız. Yine terminalden aşağıdaki komutu çalıştırarak kurulumu gerçekleştirebilirsiniz:

pip install Flask-SQLAlchemy

Kurulumdan sonra uygulamamızda veri tabanını tanımlamak için şu adımları izleyelim:

from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db = SQLAlchemy(app)

Seçtiğimiz veri tabanı URI’sını yukarıdaki gibi tanımladıktan sonra kullanıcı modeli oluşturalım. Bu model, kullanıcı verilerimizi saklamamıza olanak sağlayacak:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

Böylece, User adında bir model tanımlamış olduk. Bu modelle birlikte kullanıcı adı ve e-posta bilgilerini veri tabanında saklayabileceğiz.

CRUD İşlemleri

Artık kullanıcılarımızı veri tabanında saklayabileceğimize göre, CRUD (Create, Read, Update, Delete) işlemlerini nasıl gerçekleştirebileceğimize bakalım. Özellikle, kullanıcıları listelemek ve güncellemek için yeni endpoint’ler ekleyelim. Aşağıda, kullanıcıları listeleme ve güncelleme işlemleri için gerekli kod parçaları bulunmaktadır:

# Tüm kullanıcıları listeleme
@app.route('/api/users', methods=['GET'])
def get_users():
    all_users = User.query.all()
    return {'users': [{'id': user.id, 'username': user.username, 'email': user.email} for user in all_users]}

# Kullanıcı güncelleme
@app.route('/api/users/', methods=['PUT'])
def update_user(id):
    user = User.query.get(id)
    if not user:
        return {'message': 'User not found'}, 404
    data = request.get_json()
    user.username = data.get('username', user.username)
    user.email = data.get('email', user.email)
    db.session.commit()
    return {'message': 'User updated', 'user': {'id': user.id, 'username': user.username, 'email': user.email}}

Burada, GET /api/users isteği ile tüm kayıtlı kullanıcıları listelemiş ve PUT /api/users/{id} isteği ile belirli bir kullanıcının bilgilerini güncelledik. Kullanıcının bulunamaması durumu için bir hata yanıtı da ekledik.

Sonuç ve Öneriler

Bu yazıda, Python ve Flask kullanarak basit bir REST API sunucusu oluşturmayı öğrendik. REST API’ler, modern uygulamnaların bir parçası olarak önemli bir rol oynamakta ve Python’un esnekliği, geliştiricilere hızlı prototip üretme imkanı sunmaktadır. Geliştirdiğiniz API’lerin performansını artırmak için Flask ile birlikte çeşitli eklentiler ve araçlar kullanabilirsiniz.

REST API geliştirme sürecine derinlemesine bir bakış açısı kazandıysanız, daha fazla ölçüt ve en iyi uygulama hakkında araştırmaya devam etmenizi öneririm. API’lerinizi güvenlik açısından koruyarak kullanıcı verilerini güvende tutmak için gerektiğinde yetkilendirme ve kimlik doğrulaması mekanizmaları eklemeyi unutmayın.

Son olarak, bu örnekle sınırlı kalmayın! Kendi projelerinizi geliştirerek öğrendiklerinizi pekiştirin ve Python ekosisteminde aktif olun. Her zaman yeni kütüphaneleri ve uygulama alanlarını keşfetmek, yazılımcı olarak gelişiminizi destekleyecektir.

Scroll to Top