mcpField
A
api-filtering-sorting

api-filtering-sorting

github.com/aj-geddes开发373447 次安装34 周前更新
代码仓库

关于 api-filtering-sorting

用于构建灵活 API 筛选与排序功能的技能,提供查询验证、安全和性能方面的指引。适合开发搜索界面及支持复杂查询的数据接口。

主要功能

  1. 01灵活的筛选与排序
  2. 02解析查询参数
  3. 03输入验证与字段白名单
  4. 04SQLAlchemy 与 Elasticsearch 指南
  5. 05查询性能实践

适用场景

  1. 01为 API 接口添加筛选和排序
  2. 02构建支持高级查询的搜索界面
  3. 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.md
elasticsearch-filtering.md
filter-builder-pattern.md
python-filtering-sqlalchemy.md
query-parameter-filtering.md
query-validation.md
scripts/
validate-schema.sh
templates/
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