📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Flask Web Framework REST API with Flask

REST API with Flask

6 min read Quiz at the end
Build a REST API in Flask: one route per HTTP verb, jsonify(), get_or_404(), and status codes.

Building a REST API

from flask import Blueprint, jsonify, request
from .models import User, db

api = Blueprint("api", __name__)

@api.route("/users", methods=["GET"])
def get_users():
    page  = request.args.get("page", 1, type=int)
    users = User.query.paginate(page=page, per_page=10)
    return jsonify({
        "data":  [u.to_dict() for u in users.items],
        "total": users.total,
        "pages": users.pages,
    })

@api.route("/users/", methods=["GET"])
def get_user(id):
    user = db.get_or_404(User, id)
    return jsonify(user.to_dict())

@api.route("/users", methods=["POST"])
def create_user():
    data = request.get_json() or {}
    if "email" not in data:
        return jsonify({"error": "email required"}), 400
    user = User(name=data["name"], email=data["email"])
    db.session.add(user)
    db.session.commit()
    return jsonify(user.to_dict()), 201

@api.route("/users/", methods=["DELETE"])
def delete_user(id):
    user = db.get_or_404(User, id)
    db.session.delete(user)
    db.session.commit()
    return "", 204
Topic Quiz · 2 questions

Test your understanding before moving on

1. Which HTTP method creates a resource in REST?
💡 POST creates new resources — response typically returns 201 Created.
2. How do you get a record or return 404 in Flask-SQLAlchemy?
💡 db.get_or_404() aborts with 404 if record not found.