Flask + SQLite 实现一个迷你 API 系统

Flask + SQLite 实现一个迷你 API 系统

本文将带你从零实现一个使用 Flask + SQLite 搭建的迷你 RESTful API 系统,实现基础的增删改查(CRUD)功能,适合用作学习、Demo、或后端原型快速开发。


🧰 技术栈

  • Flask:轻量级 Web 框架

  • SQLite:零配置、嵌入式数据库

  • Flask-SQLAlchemy:ORM 工具,用于操作数据库


📦 环境准备

<div><p>bash</p><p><code id="code-lang-bash"><span><span>pip install flask flask_sqlalchemy
</span></span></code></p></div>

📁 项目结构

<div><p>bash</p><p><code><span><span>mini_api/
├── app.py           </span><span><span># 主程序</span></span><span>
├── models.py        </span><span><span># 数据模型</span></span><span>
├── database.db      </span><span><span># SQLite 数据库</span></span><span>
└── requirements.txt </span><span><span># 可选依赖文件</span></span><span>
</span></span></code></p></div>

1️⃣ 数据模型定义(models.py)

# models.py
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Note(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=False)

    def to_dict(self):
        return {"id": self.id, "title": self.title, "content": self.content}


2️⃣ 应用主程序(app.py)

# app.py
from flask import Flask, request, jsonify
from models import db, Note

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db.init_app(app)

# 初始化数据库
@app.before_first_request
def create_tables():
    db.create_all()

# 获取所有笔记
@app.route("/notes", methods=["GET"])
def get_notes():
    notes = Note.query.all()
    return jsonify([note.to_dict() for note in notes])

# 获取单个笔记
@app.route("/notes/<int:note_id>", methods=["GET"])
def get_note(note_id):
    note = Note.query.get_or_404(note_id)
    return jsonify(note.to_dict())

# 创建新笔记
@app.route("/notes", methods=["POST"])
def create_note():
    data = request.get_json()
    new_note = Note(title=data["title"], content=data["content"])
    db.session.add(new_note)
    db.session.commit()
    return jsonify(new_note.to_dict()), 201

# 更新笔记
@app.route("/notes/<int:note_id>", methods=["PUT"])
def update_note(note_id):
    note = Note.query.get_or_404(note_id)
    data = request.get_json()
    note.title = data.get("title", note.title)
    note.content = data.get("content", note.content)
    db.session.commit()
    return jsonify(note.to_dict())

# 删除笔记
@app.route("/notes/<int:note_id>", methods=["DELETE"])
def delete_note(note_id):
    note = Note.query.get_or_404(note_id)
    db.session.delete(note)
    db.session.commit()
    return jsonify({"message": "Note deleted"}), 200

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


🧪 测试示例(使用 curl)

创建笔记

curl -X POST -H "Content-Type: application/json" \
    -d '{"title": "Flask入门", "content": "快速创建一个API"}' \
    http://localhost:5000/notes

获取所有笔记

curl http://localhost:5000/notes


✅ 总结

这个迷你 API 系统展示了:

  • 如何用 Flask 结合 SQLite 快速构建后端服务

  • 使用 SQLAlchemy 实现数据库模型管理

  • 提供 RESTful 接口支持基本的 CRUD 操作


🔒 补充建议

  • 加入 token 验证实现简单的身份验证

  • 使用 Flask-Marshmallow 提供数据校验与序列化

  • 使用 SQLite 的同时,也可以平滑迁移到 PostgreSQL、MySQL 等数据库


如需更复杂的功能(分页、搜索、用户系统等),可进一步封装为 Blueprint 并配合 Swagger 文档管理系统。

posted @ 2025-07-01 09:13  富美  阅读(61)  评论(0)    收藏  举报