关于 flask-api-development
面向使用 Flask 构建 REST API 和轻量微服务的开发者,涵盖模块化结构、数据库访问、认证、验证与错误处理。
主要功能
- 01使用 Blueprint 组织 API
- 02SQLAlchemy 模型与数据库访问
- 03JWT 认证
- 04请求验证与错误处理
适用场景
- 01组织 Flask REST API
- 02为端点添加 JWT 认证
- 03将 API 路由连接到关系数据库
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill flask-api-development安装后在 Claude Code 中输入/flask-api-development确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/application-factory-and-configuration.mdauthentication-and-jwt.mdblueprints-for-modular-api-design.mddatabase-models-with-sqlalchemy.mdflask-application-setup.mdrequest-validation.mdscripts/validate-api.shtemplates/api-scaffold.yaml详细介绍
Flask API 开发
目录
概述
使用蓝图实现模块化组织,使用 SQLAlchemy 作为 ORM,加入 JWT 身份验证、全面的错误处理和恰当的请求验证,并遵循 REST 原则,构建高效的 Flask API。
适用场景
- 使用 Flask 构建 RESTful API
- 以最小开销创建微服务
- 实现轻量级身份验证系统
- 设计带有恰当验证的 API 端点
- 集成关系型数据库
- 构建请求/响应处理系统
快速开始
最小可用示例:
# app.py
from flask import Flask, request, jsonify
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from flask_jwt_extended import JWTManager
import os
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL', 'sqlite:///app.db')
app.config['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY', 'dev-secret')
app.config['JSON_SORT_KEYS'] = False
db = SQLAlchemy(app)
jwt = JWTManager(app)
CORS(app)
# Request ID middleware
@app.before_request
def assign_request_id():
import uuid
request.request_id = str(uuid.uuid4())
# Error handlers
@app.errorhandler(400)
def bad_request(error):
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| Flask 应用设置 | Flask 应用设置 |
| 使用 SQLAlchemy 定义数据库模型 | 使用 SQLAlchemy 定义数据库模型 |
| 身份验证和 JWT | 身份验证和 JWT |
| 用于模块化 API 设计的蓝图 | 用于模块化 API 设计的蓝图 |
| 请求验证 | 请求验证 |
| 应用工厂和配置 | 应用工厂和配置 |
最佳实践
✅ 应该做
- 使用蓝图实现模块化组织
- 使用 JWT 实现恰当的身份验证
- 验证所有用户输入
- 使用 SQLAlchemy ORM 执行数据库操作
- 实施全面的错误处理
- 为集合端点使用分页
- 记录错误和重要事件
- 返回恰当的 HTTP 状态码
- 正确配置 CORS
- 使用环境变量进行配置
❌ 不要做
- 将机密信息存储在代码中
- 使用全局变量保存共享状态
- 忽略数据库事务
- 不经验证就信任用户输入
- 在生产环境中返回堆栈跟踪
- 使用可变默认参数
- 忘记处理数据库连接错误
- 在路由处理程序中实现身份验证
评论
支持 Markdown