from flask import Flask, request, jsonify
from flask_jwt_extended import JWTManager, create_access_token, jwt_required
from flask_sqlalchemy import SQLAlchemy
import asyncio
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['JWT_SECRET_KEY'] = 'super-secret'
db = SQLAlchemy(app)
jwt = JWTManager(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
@app.route('/register', methods=['POST'])
def register():
username = request.json.get('username')
if User.query.filter_by(username=username).first():
return jsonify({"msg": "User exists"}), 400
user = User(username=username)
db.session.add(user)
db.session.commit()
return jsonify({"msg": "Registered"}), 201
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
user = User.query.filter_by(username=username).first()
if not user:
return jsonify({"msg": "Not found"}), 404
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token)
@app.route('/profile')
@jwt_required()
async def profile():
# Simulate async data fetching
await asyncio.sleep(1)
return jsonify({"msg": "This is your async profile"}), 200
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Flask!'
# This tiny app responds with "Hello, Flask!" at the root endpoint.