Bir Sayfa Seçin

Uygulama geliştirirken, çoğu zaman bir web-servise ihtiyaç duyarız. Uygulamamızı tam anlamıyla test edebilmek için bir web-servisi ve onu çalıştıran bir sunucuyu ayağa kaldırmak gerekir. Geliştirme ortamında, API’ler üzerinde yaptığımız değişiklikleri hızlıca denemek için, web-servisin de hızlıca geliştirilmesine ve hazır hale getirilmesine ihtiyaç vardır. Ancak genellikle, basit bir işlev için bile, saatlerce dokümantasyon, konfigürasyon ve geliştirme gerekir.

Batteries-included

 Bottle.py Web FrameworkTam da bu ihtiyaçlara cevap veren, Python’da geliştirilmiş, tek dosyalık bir web framework’ü mevcut.  Bottle, WSGL üzerine, geliştirilmiş hafif ve çevik tek-dosyalık bir web framework’ü. Tüm ihtiyaçlara cevap vermese de, geliştirme ortamında ihtiyaç duyacağınız hızı size sağlıyor. Diğer framework’lerden en büyük farkı, içerisinde web-tabanlı geliştirme için, default konfigürasyonla size sunulmuş birçok yapı-taşı olması. Dilerseniz, bu yapı-taşlarını isteklerinize göre özelleştirmeniz de mümkün.


Bottle’ın çevikliğini göstermek için, aşağıda sadece birkaç satır kodla geliştirilmiş, basit bir API örneğine bakalım;

import bottle
from bottle import route, run, request

@route('/', method='GET')
def homepage():
    return 'Hello world!'

@route('/events/:id', method='GET')
def get_event(id):
    return dict(name = 'Event ' + str(id))

@route('/result', method='POST')
def result_submit():
    result = request.POST.get('result', '').strip()
    print(result)
    # write result to file
    fileName = "Result.json"
    f = open(fileName + ".json", "w")
    f.write(result)
    return {'success': True}

bottle.debug(True)
run()

İlk API, basit bir string döndürüyor, ikinci API ise, bir Python dictionary nesnesini, bu da içsel olarak Bottle tarafından JSON’a çevriliyor, üçüncü API ise, HTTP Post ile /result pathinden kendisine gönderilmiş olan, isteği dosyaya kaydediyor. Son satırdaki, run() metodu da, Bottle’ın içerisinde hazır gelen web-sunucusunu ayağa kaldırıyor. Böylece bu kodu çalıştırmak için saatlerce web sunucu konfigürasyonu yapmanıza gerek kalmıyor.

Yukarıdaki kodu webservice.py dosyasına kaydedersek; tek yapmamız gereken.

 python webservice.py 

http://localhost/ tan webservisinizi kullanmaya başlayabilirsiniz.

Biraz hızlandıralım

Bottle’ın içerisindeki default sunucu, geliştirme amaçlı ve tek-thread çalışan bir sunucu olduğundan, ihtiyaçlarınız için yavaş gelebilir. Hızlandırmak isterseniz yapmanız gereken değişiklik çok az;

import bottle
from bottle import route, run, PasteServer

//...
run(server=PasteServer)

Daha başka sunucuları da bu şekilde kullanabilirsiniz. PasteServer için python-paste ‘in yüklü olması gerekiyor.