Il y a des moments où vous souhaitez créer rapidement une petite API tout en utilisant DB. Dans un tel cas, Flask est pratique. Fondamentalement, vous pouvez créer une API simplement en étoffant le code suivant.
À mon avis, si vous avez un projet de taille moyenne, ajoutez flask- * plus tard, ou utilisez beaucoup de DB, vous devriez utiliser un framework tel que Django. Si vous prévoyez de passer à un autre framework plus tard, utilisez celui-ci.
L'API qui fournit CRD pour Model est illustrée ci-dessous. (La mise à jour sera mise en œuvre plus tard si vous en avez envie)
# coding: utf-8
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:postgres@localhost/postgres'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
# Model
class Model(db.Model):
__tablename__ = 'models'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True)
def to_dict(self):
return dict(
id=self.id,
name=self.name
)
def __init__(self, name):
self.name = name
def __repr__(self):
return '<Model {}>'.format(self.name)
@app.route("/api/v1/model/<id>", methods=['DELETE'])
def api_v1_model_id(id):
if request.method == 'DELETE':
d = Model.query.get(id)
db.session.delete(d)
db.session.commit()
return '', 204
@app.route("/api/v1/models", methods=['GET', 'POST'])
def api_v1_models():
if request.method == 'POST':
name = request.json['name']
d = Model(name)
db.session.add(d)
db.session.commit()
return jsonify(d.to_dict()), 201
if request.method == 'GET':
ls = Model.query.all()
ls = [l.to_dict() for l in ls]
return jsonify(ls), 200
if __name__ == "__main__":
db.drop_all()
db.create_all()
app.run(host='0.0.0.0', port=3001)
Recommended Posts