問い合わせはREST APIエンドポイントを指定して実行することができます。REST APIは主要なHTTPプロトコルに対応しています。そしてこれはクライアントライブラリがビューのデータを取得するのに利用するものと同じシステムです。
REST APIを使用すると、ポート8092上のCouchbase Serverクラスタ内の任意のノードへアクセスして、ビューに問い合わせすることができます。例:
GET http://localhost:8092/bucketname
/_design/designdocname
/_view/viewname
ここで:
bucketname
はバケットの名前です。
designdocname
ビューを含むデザインドキュメントの名前です。
開発用コンテンツ(「開発ビューとプロダクションビュー」を参照)に定義されているビューでは、designdocname
はdev_
接頭辞を持っています。たとえば、デザインドキュメントbeer
はdev_beer
を使用して開発ビューとしてアクセス可能です。
プロダクション用ビューはその名前のみを使用してアクセス可能です。
viewname
はデザインドキュメント内の対応するビューの名前です。
SASLパスワードで保護されたバケット内に格納されているビューにアクセスするとき、リクエストのURLにバケットの名前とパスワードを含めなければなりません。
GET http://bucketname
:password
@localhost:8092/bucketname
/_design/designdocname
/_view/viewname
URLリクエストへの追加の引数として、ビューから情報を選択すること、limit(出力するアイテムの数を指定すること)、ソートすることやその他オプションを指定することができます。たとえば、10アイテムだけを出力するには:
GET http://localhost:8092/bucketname
/_design/designdocname
/_view/viewname
?limit=10
URLのフォーマットは、HTTPの仕様に従います。最初の引数は、疑問符(?
)を使用して、ベースURLと区切ります。追加の引数は、アンパサンド(&
)を使用して、区切ります。特殊文字は、HTTPの標準規則に従って引用符で囲むかエスケープする必要があります。
その他のサポートされている引数は、以下の表に詳述されています。
メソッド | GET /bucket/_design/[デザインドキュメント]/_view/[ビュー名] |
リクエストデータ | なし |
レスポンスデータ | ビューから返される行のJSON |
認証情報の要否 | 不要 |
クエリ引数 | |
descending | キーの降順でドキュメントを返します |
パラメータ:真偽、任意 | |
endkey | 指定したキーになったときにレコードの返却を停止します。キーはJSON値で指定する必要があります |
パラメータ:文字列、任意 | |
endkey_docid | 指定したドキュメントIDになったときにレコードの返却を停止します |
パラメータ:文字列、任意 | |
full_set | すべてのクラスタデータセットを使用します(開発ビューのみ) |
パラメータ:真偽、任意 | |
group | グループもしくは単一行にreduce関数を使用して結果をグループ化します |
パラメータ:真偽、任意 | |
group_level | 使用するグループレベルを指定します |
パラメータ:数値、任意 | |
inclusive_end | 指定した終了キーの結果を含むかどうかを指定します |
パラメータ:真偽、任意 | |
key | 指定したキーに一致するドキュメントのみを返します。キーはJSON値で指定する必要があります |
パラメータ:文字列、任意 | |
keys | 配列内で指定したキーのどれかに一致するドキュメントのみを返します。キーはJSON値で指定する必要があります。このオプションを指定するときはソートが適用されません。 |
パラメータ:配列、任意 | |
limit | 指定した数字で返却するドキュメントの数を制限します |
パラメータ:数値、任意 | |
on_error | エラー発生時のレスポンスを設定します |
パラメータ:文字列、任意 | |
サポートされる値 | |
continue :エラー発生時もビュー情報の生成を続け、ビュー応答のストリーム内にエラー情報を含みます | |
stop :エラーが発生するとすぐに停止し、ビュー情報として何も返しません | |
reduce | reduce関数を使用します |
パラメータ:真偽、任意 | |
skip | 結果を返し始める前にこの数のレコードをスキップします |
パラメータ:数値、任意 | |
stale | staleビューからの結果を使用できるようにします |
パラメータ文字列、任意 | |
サポートされる値 | |
false :結果を返す前にビューインデックスを強制的に更新します | |
ok :staleビューを許可します | |
update_after :staleビューを許可し、アクセス後ビューを更新します | |
startkey | 指定したキー以上のレコードを返します。キーはJSON値で指定する必要があります |
パラメータ:文字列、任意 | |
startkey_docid | 指定したドキュメントIDで始まるレコードを返します |
パラメータ:文字列、任意 |
ビューからの出力は、ビュー内の行数についての情報、および個々のビューの情報を含むJSON構造です。
ビューの結果の例を以下に示します:
{ "total_rows": 576, "rows" : [ {"value" : 13000, "id" : "James", "key" : ["James", "Paris"] }, {"value" : 20000, "id" : "James", "key" : ["James", "Tokyo"] }, {"value" : 5000, "id" : "James", "key" : ["James", "Paris"] }, … ] }
返されるJSONは2つのフィールドから成ります:
total_rows
格納されたビュー内の情報の行数のカウント。これは完全なビューインデックス内の行数であり、返されたデータセット内の行数ではありません。
rows
値と、行を生成するドキュメントIDと、キーで構成されたビューのデータを含む各要素を持つ配列。
エラーが発生した場合、HTTPレスポンスは、(200ではない)エラーの種類になり、JSONの構造は、基本的なerror
と、より詳細なreason
の2つのフィールドを含んで返されます。例:
{ "error":"bad_request", "reason":"invalid UTF-8 JSON: {{error,{1,\"lexical error: invalid char in json text.\\n\"}},\n \"Paris\"}" }
クエリに不正なパラメータを指定した場合、エラーメッセージがサーバから返されます。クライアントライブラリ内での正確な動作は個々の言語の実装間で異なるかもしれませんが、すべての場合において、無効なクエリは適切なエラーまたは例外を生成します。
各パラメータの詳細、および相互作用の特定の領域は、次のセクション内で補足されています。これはすべてのクライアントライブラリインタフェースに適用されます。