Python ile REST API Oluşturma: Adım Adım Rehber

REST API Nedir?

REST (Representational State Transfer), web hizmetleri için bir mimari stilidir. Temel prensibi, web kaynaklarına erişimin HTPO protokolü aracılığıyla sağlanmasıdır. RESTful API’ler, istemci ve sunucu arasındaki iletişimi düzene koyarak, verilerin alınıp gönderilmesini kolaylaştırır. REST API, özellikle veritabanlarından veri okuma veya yazma işlemleri için yaygın olarak kullanılır ve günümüzde pek çok uygulamanın arka planında çalışmaktadır.

REST API’leri, genelde JSON veya XML gibi veri formatları kullanarak istemciden sunucuya veri gönderirken, sunucudan istemciye de verileri iletir. Basit bir yapıya dayanması nedeniyle, REST API’leri geliştirmek ve kullanmak oldukça kolaydır. Bu yazıda, Python kullanarak nasıl RESTful bir API oluşturabileceğimizi adım adım keşfedeceğiz.

RESTful API oluştururken, temel olarak dört ana işlem gerçekleştiriyoruz: veri oluşturma (POST), veri okuma (GET), veri güncelleme (PUT) ve veri silme (DELETE). Bu işlemler, uygulamamızın temelini oluşturacak ve kullanıcılarımızla veri etkileşimini sağlayacaktır.

Gerekli Araçlar ve Kütüphaneler

Python ile REST API geliştirmek için birkaç kütüphane ve araca ihtiyacımız olacak. En popüler seçeneklerden biri Flask’dır. Flask, hafif yapısıyla hızlı bir geliştirme süreci sunar ve RESTful API’ler oluşturmak için oldukça idealdir. Diğer bir seçenek ise Django’dur. Django, daha büyük projeler için komple bir framework sunarken, Django REST framework ile de RESTful API’ler geliştirmeyi kolaylaştırır.

Bu yazıda örneklerimizi Flask kullanarak gerçekleştireceğiz. Flask’i kurmak için terminal veya komut istemcisinde şu komutu çalıştırabilirsiniz:

pip install Flask

Bunun yanı sıra, uygulamamızda veri saklamak için SQLite veritabanını kullanacağız. SQLite’ı anında kullanabileceğimiz için, ek bir kurulum yapmamıza gerek kalmayacak.

Flask ile İlk REST API Oluşturma

Artık gerekli araçlarımızı yüklediğimize göre, ilk REST API’mizi oluşturmaya başlayabiliriz. Aşağıda basit bir API uygulamasının nasıl yapıldığını göreceksiniz:

from flask import Flask, jsonify, request

app = Flask(__name__)

# Örnek veri
books = [
    {'id': 1, 'title': 'Python Proje Geliştirme', 'author': 'Ege Korkmaz'},
    {'id': 2, 'title': 'Veri Bilimi ve Makine Öğrenimi', 'author': 'Ahmet Yılmaz'}
]

@app.route('/books', methods=['GET'])
def get_books():
    return jsonify(books)

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

Yukarıdaki kod, basit bir Flask uygulaması oluşturarak /books adresinde kitapların listesini JSON formatında döndürecektir. Örnek verilerimizi bir liste içinde tanımladık ve GET isteğine yanıt verecek bir fonksiyon oluşturduk.

Uygulamayı çalıştırdığınızda, tarayıcınıza http://127.0.0.1:5000/books yazarak kitapların listesini görebilirsiniz. Bu, REST API’mizin temelini oluşturur; şimdi ek özellikler eklemeye başlayalım.

Veri Ekleme ve Silme İşlemleri

Artık temel GET isteğimizi tamamladığımıza göre, veri ekleme ve silme işlevlerini ekleyelim. Şimdi, kitap listemize yeni kitaplar ekleyebileceğimiz ve mevcut kitapları silebileceğimiz yöntemleri de tanımlayalım.

@app.route('/books', methods=['POST'])
def add_book():
    new_book = request.get_json()
    books.append(new_book)
    return jsonify(new_book), 201

@app.route('/books/', methods=['DELETE'])
def delete_book(book_id):
    global books
    books = [book for book in books if book['id'] != book_id]
    return jsonify({'result': True})

Yukarıdaki kod, POST yöntemini kullanarak yeni bir kitap eklememizi sağlar. Kitap verisi JSON formatında istek gövdesinde gönderilmelidir. Ayrıca, belirli bir kitap kimliği ile bir kitabı silmek için DELETE isteği tanımladık. Bu yöntem, belirli bir kimlik değerine sahip kitabı bulup listeden silmektedir.

POST isteği için bir araç kullanarak (örneğin Postman veya cURL) testler yapabilirsiniz. Örneğin, yeni bir kitabı ekleyen bir POST isteği yapmak için şu komutları kullanabilirsiniz:

curl -X POST http://127.0.0.1:5000/books -H 'Content-Type: application/json' -d '{"id": 3, "title": "Python Temelleri", "author": "Ali Demir"}'

Veri Güncelleme İşlemleri

Bir REST API’de sıkça karşılaşılan bir diğer işlem de mevcut verilerin güncellenmesidir. Şimdi, seçtiğimiz bir kitabı güncelleyebilmek için bir PUT isteği ekleyelim. Bu işlem önceden var olan bir kaynağı değiştirerek yeni verilerle güncellenecektir.

@app.route('/books/', methods=['PUT'])
def update_book(book_id):
    for book in books:
        if book['id'] == book_id:
            book.update(request.get_json())
            return jsonify(book)
    return jsonify({'error': 'Book not found'}), 404

Yukarıdaki kod parçası, belirtilen kitap kimliğine sahip bir kitabı bulur ve onun içeriğini günceller. Veriler yine API ile JSON formatında gönderilecektir. Ekleme ve silme işlemlerindeki gibi, şu şekilde bir cURL komutu ile güncelleme işlemini gerçekleştirebilirsiniz:

curl -X PUT http://127.0.0.1:5000/books/1 -H 'Content-Type: application/json' -d '{"title": "Python Proje Geliştirme Güncellendi", "author": "Ege Korkmaz"}'

API Güvenliği ve Haftalık Güncellemeler

REST API’ler geliştirirken, güvenliği sağlamak her zaman öncelikli bir konu olmalıdır. API’nizin dışarıdan gelen istekleri şifrelemek, yetki kontrolü yaparak kötü niyetli kişilerin erişimini engellemek önemlidir. Flask için Flask-JWT (JSON Web Token) veya Flask-Security gibi kütüphaneler kullanarak kullanıcı kimlik doğrulama süreçlerini ekleyebilirsiniz.

Ayrıca, API’lerinizi düzenli olarak güncellemek de önemli bir husustur. Sisteminize yeni işler eklemek ya da potansiyel güvenlik açıklarını kapatmak için, kullanıcı geri bildirimlerini almalı ve uygulamanızda iyileştirmelere giderek güncel kalmalısınız.

Geliştirdiğiniz API’nin kullanımına ilişkin istatistikleri takip etmek, performansını iyileştirmek ve kullanıcı deneyimini artırmak adına önemlidir. Analytics araçları kullanarak, API’nizi nasıl daha etkili hale getirebileceğiniz hakkında veriler elde edebilirsiniz.

Sonuç ve Öneriler

Pythonda bir REST API oluşturmak, başlangıçta karmaşık görünebilir ancak adım adım ilerleyerek kontrol edilebilir hale getirilebilmektedir. Flask kullanarak hem hızlı hem de etkili bir API geliştirme deneyimi yaşadık. GET, POST, PUT ve DELETE işlemleri ile temel bir CRUD uygulaması oluşturduk.

Gelecekte, Django gibi daha büyük projeler için ilgili alternatif framework’leri araştırarak uygulama geliştirme sürecinizi farklı açılardan öğrenebilir, daha karmaşık uygulamalar üzerinde çalışabilirsiniz. Ayrıca, API’nizi kullanıcı dostu hale getirmek için detaylı bir dokümantasyon sağlamayı da ihmal etmeyin.

Sonuç olarak, Python ile RESTful API geliştirme sürecinize başlayarak yeni projeler tasarlamak, geliştirmek ve topluluğa katkı sağlamak için gereken bilgi birikimine eriştiniz. Şimdi, öğrendikleriniz doğrultusunda kendi projelerinizi hayata geçirme zamanı!

Scroll to Top