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;

[code language=”python”]
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()

[/code]

İ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.

[code language=”bash”] python webservice.py [/code]

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;

[code language=”python”]
import bottle
from bottle import route, run, PasteServer

//…
run(server=PasteServer)
[/code]

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