Flask ve Postgres kullanarak, uygulamanız ve harici sistemler arasında sorunsuz veri alışverişine izin veren bir RESTful API'yi nasıl oluşturacağınızı öğrenin.

Uygulama Programlama Arayüzleri (API'ler), farklı sistemleri oluşturmanın ve bağlamanın kritik bir parçasıdır ve uygulamalarınızın diğer hizmetlerle iletişim kurmasına ve veri alışverişinde bulunmasına olanak tanır.

Arka uç geliştirme, yalnızca API yazmaktan daha fazlasını içerirken, aynı zamanda sunucu tarafı iş mantığı yazmayı, verimli sistem tasarlamayı da kapsar. Flask (hafif bir Python çerçevesi) ve Postgres ile basit bir CRUD REST API'sinin nasıl oluşturulacağını öğrenmek için okumaya devam edin. veri tabanı.

Arka Uç API'leri Oluşturmak için Flask Kullanma

şişe hafiftir Python çerçevesi React ve Angular gibi farklı teknolojiler kullanılarak yazılan web istemcileri için arka uç API'lerinin yazılmasını basitleştiren bir dizi özellik sağlar.

Bu projenin kaynak kodunu burada bulabilirsiniz. GitHub deposu.

Bu kılavuz, bir metin yazarken size yol gösterecektir.

instagram viewer
Dört CRUD işlemini uygulayan REST API: bir Postgres veritabanında saklanan kullanıcı verilerini yönetmek için oluşturun, okuyun, güncelleyin ve silin.

Bir Postgres Veritabanı Kurun

Başlamak için şuraya gidin: ElephantSQL, bulutta Postgres veritabanları oluşturmak ve yönetmek, kaydolmak ve hesabınızın genel bakış sayfasında oturum açmak için bir platform sağlayan bulut tabanlı bir veritabanı barındırma çözümü.

Tıkla Yeni Örnek Oluştur Uygulamanız için yeni bir örnek oluşturmak için düğmesine basın.

Bulut sunucunuzun adını girin ve ücretsiz planı seçin ve son olarak kurulum işlemini tamamlamak için örneğin barındırılacağı bölgeyi seçin.

Örnek oluşturulduktan sonra, ayarlar sayfasına gidin ve kopyalayın veritabanı URL'si, veritabanıyla bağlantı kurmak için kullanacaksınız.

Flask Sunucu Kurma

Terminalinizde bir proje klasörü oluşturun ve mevcut dizini bu yeni klasöre değiştirin.

Flask'ı kurmadan önce, makinenizde Python sürüm 3.6+ çalıştırdığınızı onaylayın. Değilse, en son yüklemeniz gerekir Piton sürüm.

piton --versiyon

Daha sonra yükleyin sanal ortam, yalıtılmış bir sanal geliştirme ortamı oluşturmak için.

pip kurulum virtualenv

Ardından, sanal bir ortam oluşturmak için aşağıdaki komutu çalıştırın.

sanalenv venv

Son olarak sanal ortamı etkinleştirin.

# Windows'ta: 
.\venv\Komut Dosyaları\etkinleştir
# Unix veya MacOS'ta:
kaynak venv/bin/etkinleştir

Gerekli Paketleri Kurun

Proje klasörünüzün kök dizininde bir gereksinimler.txt dosya ve bu paketleri ekleyin.

matara
python-dotenv
psycopg2-ikili

Ardından, paketleri kurun.

pip kurulumu -r gereksinimleri.txt

bu psycopg2-ikili Postgres veri tabanınızla bağlantı kurmanıza ve çeşitli veri tabanı işlemlerini gerçekleştirmenize izin vermek için ara yazılım görevi gören bir Python kitaplığıdır.

Son olarak, bir oluştur .env dosya ve veritabanı URL'nizi yapıştırın.

DATABASE_URL= veritabanı URL'niz

Flask Sunucusunu Oluşturun

Son olarak, bir app.py dosyasını kök dizine kopyalayın ve aşağıdaki kodu ekleyin.

içe aktarmak işletim sistemi 
içe aktarmak psikopat2
itibaren dotenv içe aktarmak load_dotenv
itibaren matara içe aktarmak Şişe, istek, jsonify

load_dotenv()

uygulama = Şişe (__name__)
url = os.getenv("VERİTABANI_URL")
bağlantı = psycopg2.connect (url)

@app.get("/")
kesinEv():
geri dönmek"Selam Dünya"

Bu kod, Flask uygulamasının bir örneğini ayarlar. Ardından, URL dizesinde belirtilen veritabanına bir bağlantı oluşturur ve son olarak, yanıt olarak bir dize döndüren bir ana yol kurar.

CRUD İşlemlerini Etkinleştiren REST API'sini Oluşturun

Şimdi, dört CRUD işlemini uygulayan REST API'sini oluşturun.

Bir Demo Tablosu Oluşturun

Veritabanında bir kullanıcı tablosu oluşturun.

app.py dosyasına aşağıdaki kodu ekleyin.

CREATE_USERS_TABLE = "TABLO OLUŞTURMAYIN, kullanıcılar (id SERİ BİRİNCİL ANAHTARI, adı METİN);"

ile bağlantı:
ile bağlantı.imleç() gibi imleç:
imleç.yürütme (CREATE_USERS_TABLE)

  • Bu kod, adında yeni bir PostgreSQL tablosu oluşturur. kullanıcılar iki sütun ile.
  • Veritabanı ile bağlantı kurmak için psycopg2 bağlantı yöntemini kullanır ve kullanarak yeni bir imleç nesnesi oluşturur. bağlantı.imleç yürütmek için kullanılan yöntem SQL sorguları.

1. POST Yöntemini tanımlayın

Veri eklemek için gönderi rotasını oluşturun.

INSERT_USER_RETURN_ID = "INSERT INTO users (isim) DEĞERLER (%s) DÖNÜŞ id;"
@app.route("/api/user", method=["POST"])
kesinKullanıcı oluştur():
veri = request.get_json()
ad = veri["isim"]
ile bağlantı:
ile bağlantı.imleç() gibi imleç:
imleç.execute (INSERT_USER_RETURN_ID, (isim,))
user_id = imleç.fetchone()[0]
geri dönmek {"İD": Kullanıcı kimliği, "isim": isim, "İleti": f"Kullanıcı {isim} yaratıldı."}, 201
  • SQL sorgu dizesi, kullanılarak yürütülecek bir SQL ifadesi tanımlar. imleç.yürütme kullanıcı adıyla yeni bir satır eklemek için yöntem kullanıcılar' veritabanındaki tablo. Yeni oluşturulan kullanıcının kimliğini döndürür.
  • bu Kullanıcı oluştur işlev, veritabanında saklamak için parametre olarak bir ad alır. imleç.fetchone yöntem, yeni oluşturulan kullanıcının kimliğini almak için çağrılır. Son olarak, yeni oluşturulan kullanıcının kimliğini ve adını içeren bir sözlük ve kullanıcının başarıyla oluşturulduğunu belirten bir mesaj döndürülür.

2. GET Yöntemini tanımlayın

İki alma yolu tanımlayın: bir, veritabanındaki tüm verileri almak için ve iki, kimliğe dayalı olarak veritabanından belirli verileri almak için.

SELECT_ALL_USERS = "Kullanıcılardan * SEÇİN;"

@app.route("/api/user", method=["GET"])
kesinget_all_users():
ile bağlantı:
ile bağlantı.imleç() gibi imleç:
imleç.yürütme (SELECT_ALL_USERS)
kullanıcılar = imleç.fetchall()
eğer kullanıcılar:
sonuç = []
için kullanıcı içinde kullanıcılar:
sonuç.ekleme({"İD": kullanıcı[0], "isim": kullanıcı[1]})
geri dönmek jsonify (sonuç)
başka:
geri dönmek jsonify({"hata": f"Kullanıcılar bulunamadı."}), 404

@app.route("/api/user/", yöntemler=["GET"])
kesinget_user(Kullanıcı kimliği):
ile bağlantı:
ile bağlantı.imleç() gibi imleç:
imleç.yürütme("ID = %s NEREDEKİ KULLANICILARDAN * SEÇİN", (Kullanıcı kimliği,))
kullanıcı = imleç.fetchone()
eğer kullanıcı:
geri dönmek jsonify({"İD": kullanıcı[0], "isim": kullanıcı[1]})
başka:
geri dönmek jsonify({"hata": f"kimliği olan kullanıcı {Kullanıcı kimliği} bulunamadı."}), 404

  • Bu ilk API yolu, tüm kullanıcıları veritabanından almak için HTTP GET isteklerini işler. Tüm kullanıcıları veritabanından alır ve sonuçları yanıtta bir JSON biçiminde döndürür.
  • Bu ikinci API yolu, veritabanından belirli bir kullanıcı için veri almak için HTTP GET isteklerini işler. içinde alır Kullanıcı kimliği parametre olarak, kullanıcının verilerini veritabanından alır ve sonuçları yanıtta bir JSON biçiminde döndürür.

3. PUT Yöntemini tanımlayın

Veritabanında depolanan verileri güncellemek için koyma yolunu oluşturun.

@app.route("/api/user/", yöntemler=["PUT"])
kesinupdate_user(Kullanıcı kimliği):
veri = request.get_json()
ad = veri["isim"]
ile bağlantı:
ile bağlantı.imleç() gibi imleç:
imleç.execute (UPDATE_USER_BY_ID, (ad, kullanıcı_kimliği))
eğer imleç.satır sayısı == 0:
geri dönmek jsonify({"hata": f"kimliği olan kullanıcı {Kullanıcı kimliği} bulunamadı."}), 404
geri dönmek jsonify({"İD": Kullanıcı kimliği, "isim": isim, "İleti": f"kimliği olan kullanıcı {Kullanıcı kimliği} güncellenmiş."})
  • bu update_user işlevi kullanıcı kimliği parametresini girdi olarak alır ve veritabanında belirtilen kullanıcının adını güncellemek için kullanır.
  • Güncelleme işlemi başarılı olursa, güncellenmiş kullanıcı kimliği, adı ve yanıtta bir başarı mesajı içeren bir JSON nesnesi döndürür.

4. DELETE Yöntemini tanımlayın

Veritabanındaki belirli bir kullanıcının saklanan verilerini silmek için silme yolunu uygulayın.

@app.route("/api/user/", yöntemler=["SİL"])
kesinkullanıcıyı sil(Kullanıcı kimliği):
ile bağlantı:
ile bağlantı.imleç() gibi imleç:
imleç.execute (DELETE_USER_BY_ID, (user_id,))
eğer imleç.satır sayısı == 0:
geri dönmek jsonify({"hata": f"kimliği olan kullanıcı {Kullanıcı kimliği} bulunamadı."}), 404
geri dönmek jsonify({"İleti": f"kimliği olan kullanıcı {Kullanıcı kimliği} silindi."})
  • Bu API yolu, belirli bir kullanıcının kimliğini temel alarak veritabanından silme işlevini işler. Kullanıcı bulunamazsa hata mesajıyla birlikte 404 durum kodu döndürür. Ancak silme işlemi başarılı olursa, yanıtta bir başarı mesajı içeren bir JSON nesnesi döndürür.

Flask ile REST API Yazma

Bu kılavuz, basit bir CRUD REST API oluşturmak için Flask ve Postgres'in nasıl kullanılacağını gösterir. bir veritabanı bağlantısı kurmak ve bir veri tabanına veri okumak ve yazmak için farklı SQL sorguları yürütmek veri tabanı. Artık herhangi bir web uygulamasında gerekli olan dört CRUD işlemini gerçekleştirebilen basit bir REST API oluşturabilirsiniz.

İster basit bir blog ister karmaşık bir web uygulaması oluşturuyor olun, Flask ve Postgres, sağlam bir arka uç sistemi oluşturmak için gereken güçlü özellikler ve yetenekler sunar. Alternatif olarak, RESTful API'leri oluşturmak için FastAPI ve MongoDB gibi diğer teknolojileri kullanabilirsiniz.