---
url: https://docs.ogmabox.com/ja/reference/httpql.md
description: HTTPQL と StreamQL のクエリ構文で、Ogma の HTTP 履歴、WebSocket 通信、自動化の結果、関連ビューを絞り込みます。
---

# HTTPQL と StreamQL {#httpql-and-streamql}

Ogma は、Caido と互換性のあるクエリ言語のサブセットを使用して、HTTP 履歴、WebSocket 通信、自動化の結果、関連ビューを絞り込みます。

## 構文 {#syntax}

クエリは、`AND` と `OR` で結合した句で構成します。

```text
req.host:example.com AND resp.code:200
```

括弧で式をグループ化します：

```text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400
```

コメントも使用できます：

```text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
```

```text
/* focus on login */
req.path.cont:"login"
```

## 演算子 {#operators}

| 演算子 | 意味 |
| --- | --- |
| `:` | 等値比較または既定の照合。フィールドの型によって異なります |
| `.eq:` | 等しい |
| `.ne:` | 等しくない |
| `.cont:` | 含む。大文字と小文字を区別しません |
| `.ncont:` | 含まない。大文字と小文字を区別しません |
| `.cs.cont:` | 含む。大文字と小文字を区別します |
| `.cs.ncont:` | 含まない。大文字と小文字を区別します |
| `.like:` | SQL の LIKE に似たパターン照合 |
| `.nlike:` | SQL の LIKE に似たパターンに一致しない |
| `.regex:` | 正規表現に一致する |
| `.nregex:` | 正規表現に一致しない |
| `.lt:` | より小さい |
| `.lte:` | 以下 |
| `.gt:` | より大きい |
| `.gte:` | 以上 |
| `.exists` | ヘッダーが存在する。`req.header["Name"].value.exists` または対応するレスポンスの形式を使用します |

## HTTP の例 {#http-examples}

API 通信を検索：

```text
req.path.cont:"/api/"
```

サーバーエラーを検索：

```text
resp.code.gte:500
```

大きなレスポンスを検索：

```text
resp.len.gt:100000
```

JSON レスポンスを検索：

```text
resp.header["content-type"].value.cont:"application/json"
```

Cookie を含むリクエストを検索：

```text
req.header["cookie"].value.exists

```

インターセプトまたは照合・置換で変更された通信を検索：

```text
req.modified.eq:true
```

管理用と思われるパスを検索：

```text
req.path.cont:"/admin" OR req.path.cont:"/manage"
```

再送または自動化の通信を検索：

```text
source:replay OR source:automate
```

## ストリームの例 {#stream-examples}

StreamQL は、同じクエリ形式を WebSocket とストリームのビューに適用します。

トークンフィールドを含む WebSocket メッセージを検索：

```text
ws.raw.cont:"token"
```

サーバーからクライアントへのメッセージを検索：

```text
ws.direction.eq:"To Client"
```

JSON に似たメッセージを検索：

```text
ws.raw.cont:"{" AND ws.raw.cont:"}"
```

## 保存用フィルターの実用例 {#practical-saved-filters}

| 名前 | クエリ |
| --- | --- |
| API エラー | `req.path.cont:"/api/" AND resp.code.gte:400` |
| 認証エンドポイント | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| JSON 通信 | `resp.header["content-type"].value.cont:"json"` |
| 注目するメソッド | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| 機密情報の候補 | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## 制限 {#limits}

フィルターの動作を予測しやすくするため、Ogma はクエリの複雑さを制限しています：

* 式の最大ネスト深度：16。
* 句の最大数：64。

クエリが複雑になりすぎた場合は、保存済みフィルターに分割するか、検索を使ってより広範囲に調査してください。
