Flaskでバックエンドとフロントエンドを効率的に連携する方法

この記事では、PythonのFlaskフレームワークを使用してバックエンドとフロントエンドを連携する方法について詳しく説明します。具体的なコード例とその解説、応用例を含めています。

目次

Flaskとは?

FlaskはPythonで書かれた軽量なWebフレームワークです。RESTfulなAPIや小規模なWebアプリケーションの開発に適しています。

Flaskの特徴

  • 簡易な設定
  • 拡張性が高い
  • コミュニティが活発

基本的な連携方法

バックエンドとフロントエンドをFlaskで連携する基本的な手法は、APIを通じてのデータのやりとりです。

APIとは?

API(Application Programming Interface)は、異なるソフトウェア同士が連携するためのインターフェースです。

簡単な例

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/')
def home():
    # フロントエンドに渡すデータ
    data = {'message': 'Hello, World!'}
    return jsonify(data)

if __name__ == '__main__':
    app.run(debug=True)

この例では、ルートURLにアクセスしたときに、JSON形式で{‘message’: ‘Hello, World!’}を返しています。

実践的な連携方法

リアルワールドのアプリケーションでは、バックエンドとフロントエンドの連携がもっと複雑です。

データベースの連携

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)

@app.route('/users', methods=['POST'])
def add_user():
    data = request.get_json()
    new_user = User(username=data['username'])
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'User added'})

if __name__ == '__main__':
    app.run(debug=True)

このコードでは、FlaskとSQLAlchemyを使用して、ユーザー情報をデータベースに保存しています。

応用例

例1: 画像のアップロード

from flask import Flask, request, jsonify
import os

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    uploaded_file = request.files['file']
    if uploaded_file.filename != '':
        uploaded_file.save(uploaded_file.filename)
    return jsonify({'message': 'File uploaded'})

if __name__ == '__main__':
    app.run(debug=True)

この応用例では、画像やファイルのアップロードを可能にしています。

例2: セッション管理

from flask import Flask, session

app = Flask(__name__)
app.secret_key = 'supersecretkey'

@app.route('/login')
def login():
    session['username'] = 'John'
    return 'Logged in'

@app.route('/logout')
def logout():
    session.pop('username', None)
    return 'Logged out'

if __name__ == '__main__':
    app.run(debug=True)

この例では、セッションを使ってログインとログアウトを管理しています。

まとめ

Flaskを使用すると、バックエンドとフロントエンドの連携が容易になります。この記事では基本的な連携方法から応用例までを網羅的に説明しました。これを機に、Flaskでの開発を一歩進めてみてはいかがでしょうか。

コメント

コメントする

目次