api-filtering-sorting について
柔軟な API のフィルタリングとソートを構築するスキルです。クエリの検証、セキュリティ、性能に関するガイダンスを提供し、検索画面や複雑な検索要件を持つデータ取得エンドポイントの開発に適しています。
主な機能
- 01柔軟なフィルタリングとソート
- 02クエリパラメーターの解析
- 03入力検証とフィールドの許可リスト
- 04SQLAlchemy と Elasticsearch のガイド
- 05クエリ性能の実践指針
活用シーン
- 01API エンドポイントにフィルターとソートを追加
- 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 対応