关于 api-filtering-sorting
用于构建灵活 API 筛选与排序功能的技能,提供查询验证、安全和性能方面的指引。适合开发搜索界面及支持复杂查询的数据接口。
主要功能
- 01灵活的筛选与排序
- 02解析查询参数
- 03输入验证与字段白名单
- 04SQLAlchemy 与 Elasticsearch 指南
- 05查询性能实践
适用场景
- 01为 API 接口添加筛选和排序
- 02构建支持高级查询的搜索界面
- 03验证用户提供的查询参数
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill api-filtering-sorting安装后在 Claude Code 中输入/api-filtering-sorting确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced-filter-parser.mdelasticsearch-filtering.mdfilter-builder-pattern.mdpython-filtering-sqlalchemy.mdquery-parameter-filtering.mdquery-validation.mdscripts/validate-schema.shtemplates/migration-template.sql详细介绍
API 筛选与排序
目录
概览
构建灵活的筛选与排序系统,以适当的验证、安全措施和性能优化,高效处理复杂查询。
适用场景
- 构建搜索和筛选界面
- 实现高级查询功能
- 创建灵活的数据检索端点
- 优化查询性能
- 验证查询的用户输入
- 支持复杂的筛选逻辑
快速入门
最简可运行示例:
// Node.js filtering implementation
app.get("/api/products", async (req, res) => {
const filters = {};
const sortOptions = {};
// Parse filtering parameters
const allowedFilters = [
"category",
"minPrice",
"maxPrice",
"inStock",
"rating",
];
for (const key of allowedFilters) {
if (req.query[key]) {
filters[key] = req.query[key];
}
}
// Build MongoDB query
const mongoQuery = {};
if (filters.category) {
mongoQuery.category = filters.category;
}
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| 查询参数筛选 | 查询参数筛选 |
| 高级筛选解析器 | 高级筛选解析器 |
| 筛选器构建器模式 | 筛选器构建器模式 |
| Python 筛选(SQLAlchemy) | Python 筛选(SQLAlchemy) |
| Elasticsearch 筛选 | Elasticsearch 筛选 |
| 查询验证 | 查询验证 |
最佳实践
✅ 应该做
- 将允许筛选的字段列入白名单
- 验证所有输入参数
- 为用于筛选的字段建立索引
- 支持常用运算符
- 提供分面导航
- 缓存筛选选项
- 限制筛选的复杂度
- 记录筛选语法
- 使用数据库原生运算符
- 使用索引优化查询
❌ 不应该做
- 允许对任意字段进行筛选
- 支持不受限制的运算符
- 忽视 SQL 注入风险
- 创建复杂的筛选逻辑
- 暴露内部字段名称
- 对未建立索引的字段进行筛选
- 允许多层嵌套筛选
- 跳过输入验证
- 将所有筛选条件都用 OR 连接
- 忽视对性能的影响
评论
支持 Markdown