Flask Nedir ve Niye Kullanılır?
Öncelikle, Flask nedir sorusunu cevaplayalım. Flask, Python ile yazılmış, hafif ve esnek bir web framework'üdür. Aslında, Flask, minimal bir yapı sunar ve geliştiricilerin ihtiyaca göre özelleştirebileceği bir temel sağlar. Bu, onu mikro servisler, API'ler ve küçük web uygulamaları için ideal bir araç yapar. Her şeyin minimal olduğu ama yine de güçlü bir yapı sunduğu bir dünyada Flask tam olarak aradığınız şey olabilir!
Başlangıç: Flask Kurulumu ve İlk API'nizi Oluşturma
Flask'ı kurmak, gerçekten çok basit. İlk adım olarak Python’un yüklü olduğundan emin olun. Eğer yüklü değilse, Python’un resmi sitesinden en son sürümü indirip kurabilirsiniz. Ardından, terminal veya komut satırını açın ve aşağıdaki komutu kullanarak Flask’ı kurun:
```bash
pip install Flask
```
Artık Flask kurulu! Şimdi ilk API’nizi oluşturmak için birkaç satır kod yazalım.
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Merhaba, Flask API!'
if __name__ == '__main__':
app.run(debug=True)
```
Bu kadar! Bu kodla, çok basit bir API oluşturmuş olduk. Artık tarayıcınızda `http://127.0.0.1:5000/` adresine giderek "Merhaba, Flask API!" mesajını görebilirsiniz.
Flask ile Rest API Tasarlamak
Flask ile daha karmaşık API'ler oluşturmak için birkaç ek adım daha atmamız gerekecek. RESTful API tasarımını öğrenmek de işin önemli bir parçası. API’niz kaynaklara (data) erişmek için HTTP metotları (GET, POST, PUT, DELETE) kullanır.
Örnek olarak, bir kullanıcı listesi sağlayan basit bir API tasarlayalım:
```python
from flask import Flask, jsonify
app = Flask(__name__)
# Örnek kullanıcı verisi
users = [
{'id': 1, 'name': 'Ali'},
{'id': 2, 'name': 'Ayşe'},
{'id': 3, 'name': 'Ahmet'}
]
@app.route('/users', methods=['GET'])
def get_users():
return jsonify(users)
if __name__ == '__main__':
app.run(debug=True)
```
Bu kod parçasında, `/users` endpoint'ine yapılan GET isteğiyle, kullanıcıların bilgilerini JSON formatında alıyoruz. Bu basit örnek, Flask’ın güçlü bir API yapısına nasıl dönüştürülebileceğini gösteriyor.
Veritabanı ile Entegrasyon: Flask ve SQLAlchemy
Bir API’nin çoğu zaman veritabanına erişmesi gerekir. Flask ile veritabanı bağlantısı kurmanın yolu, SQLAlchemy gibi bir ORM (Object Relational Mapping) aracı kullanmaktan geçer. Bu araç, Python sınıflarınızı veritabanı tablolara dönüştürür ve SQL sorgularını Python koduyla daha rahat yazmanıza olanak sağlar.
Flask ve SQLAlchemy ile basit bir kullanıcı veritabanı bağlantısı şu şekilde olabilir:
```bash
pip install flask-sqlalchemy
```
Sonrasında Flask uygulamanızın içine şu kodu ekleyin:
```python
from flask import Flask, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
@app.route('/users', methods=['GET'])
def get_users():
users = User.query.all()
return jsonify([{'id': user.id, 'name': user.name} for user in users])
if __name__ == '__main__':
app.run(debug=True)
```
Bu örnekte, bir SQLite veritabanına bağlanıyoruz ve kullanıcı verilerini API aracılığıyla çekiyoruz. Flask ve SQLAlchemy ile veritabanı entegrasyonu gerçekten çok kolay!
API Güvenliği: JWT ile Kimlik Doğrulama
API geliştirme sürecinde güvenlik her zaman önemlidir. Özellikle kullanıcıların kişisel verilerini içeren API'ler oluşturduğunuzda, kimlik doğrulama çok kritik bir konuya dönüşür. Flask ile JWT (JSON Web Token) kullanarak güvenli bir kimlik doğrulama sistemi kurabiliriz.
JWT, sunucu ile istemci arasında güvenli bir şekilde bilgi iletmek için kullanılan bir standarttır. Flask uygulamanıza JWT entegrasyonu yapmak için `PyJWT` kütüphanesini kullanabilirsiniz:
```bash
pip install pyjwt
```
Basit bir JWT uygulaması şu şekilde yapılabilir:
```python
import jwt
from flask import Flask, request, jsonify
app = Flask(__name__)
app.config['SECRET_KEY'] = 'bu_sadece_bir_anahtar'
@app.route('/login', methods=['POST'])
def login():
data = request.get_json()
token = jwt.encode({'user': data['username']}, app.config['SECRET_KEY'], algorithm='HS256')
return jsonify({'token': token})
if __name__ == '__main__':
app.run(debug=True)
```
Bu kodda, kullanıcı adı gönderildiğinde bir JWT token’ı üretiyoruz ve bu token’ı kullanıcıya gönderiyoruz. Daha sonra bu token’ı, API’ye yapılacak her istekte doğrulamak için kullanabiliriz.
Sonuç: Flask ile Güçlü Bir API Oluşturun
Flask, minimal yapısı ve genişletilebilirliği ile RESTful API geliştirme konusunda harika bir araçtır. Bu yazıda, basit bir Flask API’sinden, JWT ile güvenli hale getirilmiş, veritabanı ile entegre olmuş bir API'ye kadar bir dizi konuya değindik. Flask ile her şey mümkün! Şimdi sıra sizde: Kendi API’nizi geliştirmek için Flask'ı kullanmaya başlayabilirsiniz.