Python/Flask ile REST Tabanlı Web Servisi Oluşturma

Hanife Kurnaz
3 min readAug 29, 2019

REST(REpresentational State Transfer), Web üzerindeki bilgisayar sistemleri arasında standartlar sağlayarak sistemlerin birbirleriyle iletişim kurmasını kolaylaştıran mimaridir. REST mimarisi ile uyumlu olan servislere RESTful servisler denmektedir.

REST mimarisinde istemci veri almak veya değiştirmek için sunucuya istekte bulunur. Bu isteği gerçekleştirirken:

  • ne tür bir işlem yapacağımızı (veri ekleme,silme gibi.),
  • istemci ve sunucunun istek veya yanıtla birlikte ek bilgiler iletebilmesini sağlayan HTTP Başlığı(HTTP Header),
  • kaynak(resource)

belirtmemiz gerekir.

HTTP Methodları

Bir REST sisteminde istekte bulunurken kullandığımız 4 temel HTTP Methodu bulunmaktadır:

  • GET — belirli bir kaynaktan veri alır
  • POST — belirli bir kaynaktağa veri yazar
  • PUT — belirli bir kaynağı günceller
  • DELETE — belirli bir kaynaktan veri siler.

Daha detaylı bilgi için tıklayınız.

Hadi Kodlayalımmm :)

Visual Studioda yeni bir Python projesi oluşturalım. File -> New -> Project -> Python -> Web -> Blank Flask Web Project adımlarını takip ederek projemizi oluşturabiliriz.

Visual Studio Flask Projesi Oluşturma

Projeyi oluşturduktan sonra karşımıza aşağıdaki pencere çıkacaktır.

İşaretli olan seçeneğe tıklayarak, programa gerekli paketleri kendimiz yükleyeceğimizi belirtiyoruz.

Daha sonra projemize Virtualenv ekleyelim. Solution Explorer -> Python Environments seçeneğine sağ tıklayarak Add Virtual Environment’e tıklayınız.

Virtualenv, bilgisayarınızdan bağımsız bir geliştirme ortamı sunar, siz istediğiniz modülleri bu geliştirme ortamında kurarsınız, yüklenen modüller sadece o proje için geçerli olup bilgisayarınıza yüklenmez.

Virtual Environment Oluşturma

Açılan pencerede Download and Install Packages seçeneğini işaretleyerek oluştur butonuna tıklayınız.

Açılan pencerede Download and Install Packages seçeneğini işaretleyerek oluştur butonuna tıklayınız.

Flask kütüphanesini projemize ekliyoruz.

from flask import Flask

Flask sınıfından app nesnesi oluşturuyoruz.

app=Flask(__name__)

İlk sayfamızı hazırlıyoruz. Flask’a hangi URL’nin fonksiyonumuzu tetiklemesi gerektiğini anlatmak için route() dekoratörünü kullanıyoruz. (/) ana dizin anlamına gelmektedir.

@app.route('/')
def hello():
return "Hello World!"

__name__ değişkeni ile dosyamız ana program olarak mı çalıştırılmış yoksa modül olarak başka bir sayfaya mı dahil edilerek çalıştırılmış kontrol edebiliyoruz. app.run(HOST,PORT)komutu ile kodumuzu çalıştırıyoruz. Host ve port numarası tanımlıyoruz.

if __name__ == '__main__':
import os
HOST = os.environ.get('SERVER_HOST', 'localhost')
try:
PORT = int(os.environ.get('SERVER_PORT', '5555'))
except ValueError:
PORT = 5555
app.run(HOST, PORT)

Proje çalıştırıldığında karşımıza Hello World! yazısı çıkacaktır.

Farklı bir örnek olarak kitapları listeleyen bir method yazalım. route() dekoratörünü ile istekte bulunacağımız adresi ve Http Methodunu belirtelim. GET Methodunu kullanarak verileri alalım. Aldığımız bu verileri JSON formatına dönüştürmek için jsonify() methodundan yararlanabiliriz.

books = [{'id': 0,
'title': 'A Fire Upon the Deep',
'author': 'Vernor Vinge',
'first_sentence': 'The coldsleep itself was dreamless.',
'year_published': '1992'},
{'id': 1,
'title': 'The Ones Who Walk Away From Omelas',
'author': 'Ursula K. Le Guin',
'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.',
'published': '1973'},
{'id': 2,
'title': 'Dhalgren',
'author': 'Samuel R. Delany',
'first_sentence': 'to wound the autumnal city.',
'published': '1975'}
]

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

http://localhost:portnumarası/flaskweb/api/books adresine istekte bulunduğunuzda verileri görebilirsiniz. İşte bu kadar kolay. Umarım işinize yaramıştır iyi çalışmalar :)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Hanife Kurnaz
Hanife Kurnaz

No responses yet

Write a response