Build a Flask REST API for a resource like books. Define CRUD routes, validate input, return JSON with proper status codes, and write pytest tests with Flask's test client to verify each endpoint works correctly.
Build a REST API with Flask
from flask import Flask, jsonify, request, abort
from dataclasses import dataclass, asdict
import sqlite3
app = Flask(__name__)
@app.route("/users", methods=["GET"])
def get_users():
conn = sqlite3.connect("db.sqlite")
rows = conn.execute("SELECT id,name FROM users").fetchall()
return jsonify([{"id":r[0],"name":r[1]} for r in rows])
@app.route("/users", methods=["POST"])
def create_user():
data = request.json
conn = sqlite3.connect("db.sqlite")
cur = conn.execute("INSERT INTO users (name) VALUES (?)",(data["name"],))
conn.commit()
return jsonify({"id": cur.lastrowid}), 201
if __name__ == "__main__":
app.run(debug=True)