Spec-Zone.ru › CouchDB 3.5

/{db}/_design/{ddoc}/_view/{view}

GET /{db}/_design/{ddoc}/_view/{view}

Выполняет указанную функцию представления из указанного документа проекта.

Параметры:
  • db – Имя базы данных

  • ddoc – Имя документа проекта

  • view – Имя функции представления

Заголовки запроса:
  • Accept –

    • application/json

    • text/plain

Параметры запроса:
  • conflicts (boolean) – Включать сведения о conflicts в ответ. Игнорируется, если include_docs не равно true. По умолчанию — false.

  • descending (boolean) – Возвращать документы в порядке убывания ключей. По умолчанию — false.

  • endkey (json) – Прекратить возвращать записи, когда будет достигнут указанный ключ.

  • end_key (json) – Псевдоним параметра endkey

  • endkey_docid (string) – Прекратить возвращать записи, когда будет достигнут указанный идентификатор документа. Игнорируется, если endkey не задан.

  • end_key_doc_id (string) – Псевдоним для endkey_docid.

  • group (boolean) – Группировать результаты с помощью функции reduce в группу или одну строку. Подразумевает, что reduce равно true, а максимальное значение — group_level. По умолчанию — false.

  • group_level (number) – Указать используемый уровень группировки. Подразумевает, что group равно true.

  • include_docs (boolean) – Включать связанный документ в каждую строку. По умолчанию — false.

  • attachments (boolean) – Включать содержимое вложений, закодированное в Base64, в документы, включаемые при include_docs равном true. Игнорируется, если include_docs не равно true. По умолчанию — false.

  • att_encoding_info (boolean) – Включать сведения о кодировке в заглушки вложений, если include_docs равно true, а конкретное вложение сжато. Игнорируется, если include_docs не равно true. По умолчанию — false.

  • inclusive_end (boolean) – Указывает, следует ли включать указанный конечный ключ в результат. По умолчанию — true.

  • key (json) – Возвращать только документы, соответствующие указанному ключу.

  • keys (json-array) – Возвращать только документы, ключ которых совпадает с одним из ключей, указанных в массиве.

  • limit (number) – Ограничить количество возвращаемых документов указанным числом.

  • reduce (boolean) – Использовать функцию свёртки. По умолчанию — true, если определена функция reduce.

  • skip (number) – Пропустить указанное количество записей перед началом возврата результатов. По умолчанию — 0.

  • sorted (boolean) – Сортировать возвращаемые строки (см. Сортировка возвращаемых строк). Установка значения false повышает производительность. Поля total_rows и offset недоступны, если этому параметру задано значение false. По умолчанию — true.

  • stable (boolean) – Следует ли возвращать результаты представления из стабильного набора шардов. По умолчанию — false.

  • stale (string) – Разрешить использовать результаты устаревшего представления. Поддерживаемые значения: ok и update_after. ok эквивалентно stable=true&update=false. update_after эквивалентно stable=true&update=lazy. Поведение по умолчанию эквивалентно stable=false&update=true. Обратите внимание: этот параметр устарел. Вместо него используйте stable и update. Дополнительные сведения см. в разделе Генерация представлений.

  • startkey (json) – Возвращать записи, начиная с указанного ключа.

  • start_key (json) – Псевдоним для startkey.

  • startkey_docid (string) – Возвращать записи, начиная с указанного идентификатора документа. Игнорируется, если startkey не задан.

  • start_key_doc_id (string) – Псевдоним параметра startkey_docid

  • update (string) – Следует ли обновить соответствующее представление перед отправкой ответа пользователю. Поддерживаемые значения: true, false, lazy. По умолчанию — true.

  • update_seq (boolean) – Следует ли включать в ответ значение update_seq, указывающее идентификатор последовательности базы данных, отражённой в представлении. По умолчанию — false.

Заголовки ответа:
  • Content-Type –

    • application/json

    • text/plain; charset=utf-8

  • ETag – Подпись ответа

  • Transfer-Encoding – chunked

Объект JSON ответа:
  • offset (number) – Смещение, с которого начинается список документов.

  • rows (array) – Массив объектов строк представления. По умолчанию возвращаемые сведения содержат только идентификатор и ревизию документа.

  • total_rows (number) – Количество документов в базе данных/представлении.

  • update_seq (object) – Текущая последовательность обновлений базы данных.

Коды состояния:
  • 200 OK – Запрос успешно выполнен

  • 400 Bad Request – Недопустимый запрос

  • 401 Unauthorized – Требуется разрешение на чтение

  • 403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными

  • 404 Not Found – Указанная база данных, документ проекта или представление не найдены

Запрос:

GET /recipes/_design/ingredients/_view/by_name HTTP/1.1
Accept: application/json
Host: localhost:5984

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 09:12:06 GMT
ETag: "2FOLSBSW4O6WB798XU4AQYA9B"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset": 0,
    "rows": [
        {
            "id": "SpaghettiWithMeatballs",
            "key": "meatballs",
            "value": 1
        },
        {
            "id": "SpaghettiWithMeatballs",
            "key": "spaghetti",
            "value": 1
        },
        {
            "id": "SpaghettiWithMeatballs",
            "key": "tomato sauce",
            "value": 1
        }
    ],
    "total_rows": 3
}

Изменено в версии 1.6.0: добавлены параметры attachments и att_encoding_info

Изменено в версии 2.0.0: добавлен параметр sorted

Изменено в версии 2.1.0: добавлены параметры stable и update

Изменено в версии 3.3.1: одиночный элемент keys обрабатывается как key

Предупреждение

Не рекомендуется использовать параметр attachments для включения вложений в результаты представления, если вложения имеют большой размер. Также учтите, что кодирование Base64 увеличивает объём передаваемых данных для вложений на 33% (то есть на одну треть).

POST /{db}/_design/{ddoc}/_view/{view}

Выполняет указанную функцию представления из указанного документа проекта. Функциональность представления для POST поддерживает те же параметры и поведение, что и указано в API GET /{db}/_design/{ddoc}/_view/{view}, но позволяет передавать параметры строки запроса в виде ключей объекта JSON в теле запроса POST.

Запрос:

POST /recipes/_design/ingredients/_view/by_name HTTP/1.1
Accept: application/json
Content-Length: 37
Host: localhost:5984

{
    "keys": [
        "meatballs",
        "spaghetti"
    ]
}

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 09:14:13 GMT
ETag: "6R5NM8E872JIJF796VF7WI3FZ"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset": 0,
    "rows": [
        {
            "id": "SpaghettiWithMeatballs",
            "key": "meatballs",
            "value": 1
        },
        {
            "id": "SpaghettiWithMeatballs",
            "key": "spaghetti",
            "value": 1
        }
    ],
    "total_rows": 3
}

Параметры представления

В документе проекта можно задать два параметра индексирования представления в виде логических свойств объекта options. В отличие от остальных параметров запроса, они не являются параметрами URL, поскольку влияют на создание индекса представления, а не на доступ к нему:

  • local_seq (boolean): Делает локальные номера последовательности документов доступными функциям map (как свойство документа _local_seq)

  • include_design (boolean): Позволяет вызывать функции map для документов проекта, а также для обычных документов

Запросы к представлениям и индексам

Определение представления в документе проекта также создаёт индекс на основе сведений о ключах, заданных в каждом представлении. Создание и использование индекса значительно повышает скорость доступа и поиска или выбора документов из представления.

Однако индекс не обновляется при добавлении или изменении документов в базе данных. Вместо этого индекс создаётся или обновляется при первом обращении к представлению либо при обращении к нему после обновления документа. В обоих случаях индекс обновляется до выполнения запроса к представлению в базе данных.

Индексы представлений обновляются инкрементально в следующих случаях:

  • В базу данных добавлен новый документ.

  • Документ удалён из базы данных.

  • Документ в базе данных обновлён.

Индексы представления перестраиваются полностью при изменении его определения. Для этого при обновлении документа проекта создаётся fingerprint определения представления. Если отпечаток изменился, индексы представления перестраиваются полностью. Это гарантирует, что изменения определений представлений отражаются в их индексах.

Примечание

Индексы представления перестраиваются, когда для одного представления из той же группы представлений (то есть для всех представлений, определённых в одном документе проекта) определяется необходимость перестроения. Например, если в документе проекта определено несколько представлений и вы обновляете базу данных, будут обновлены все три индекса представлений в этом документе проекта.

Поскольку представление обновляется при выполнении запроса к нему, при обращении к нему может возникнуть задержка возврата данных, особенно если в базе данных много документов, а индекс представления ещё не создан. Существует несколько способов уменьшить, но не полностью устранить, эти проблемы. К ним относятся:

  • Создайте определение представления (и соответствующие документы проекта) в базе данных до того, как разрешить добавление или обновление документов. Если это сделать, пока к представлению обращаются, индекс можно обновлять инкрементально.

  • Вручную выполните запрос к представлению в базе данных. Это можно сделать до того, как пользователям будет разрешено использовать представление, или вручную обратиться к нему после добавления или обновления документов.

  • Используйте ленту изменений для отслеживания изменений в базе данных, а затем обратитесь к представлению, чтобы инициировать обновление соответствующего индекса.

Ни один из этих способов не позволяет полностью исключить необходимость перестраивать или обновлять индексы при обращении к представлению, однако они могут снизить влияние обновления индекса на удобство работы конечных пользователей.

Другой вариант — разрешить пользователям обращаться к «устаревшей» версии индекса представления, вместо того чтобы принудительно обновлять индекс и отображать обновлённые результаты. Устаревшее представление может не содержать новейших данных, но вернёт результаты запроса к представлению, используя существующую версию индекса.

Например, чтобы обратиться к существующему устаревшему представлению by_recipe в документе проекта recipes:

http://localhost:5984/recipes/_design/recipes/_view/by_recipe?stale=ok

Обращение к устаревшему представлению:

  • Не инициирует перестроение индексов представления, даже если после последнего обращения произошли изменения.

  • Возвращает текущую версию индекса представления, если она существует.

  • Возвращает пустой набор результатов, если указанный индекс представления не существует.

Также можно использовать значение update_after для параметра stale. В этом случае представление возвращается как устаревшее, но процесс обновления запускается после передачи сведений о представлении клиенту.

Помимо устаревших представлений, можно использовать аргумент запроса update_seq. Этот аргумент позволяет получить сведения о представлении, включая последовательность обновлений базы данных, на основе которой оно было создано. Возвращённое значение можно сравнить с текущей последовательностью обновлений, представленной в сведениях о базе данных (возвращаемых запросом GET /{db}).

Сортировка возвращаемых строк

Каждый элемент возвращаемого массива сортируется с использованием встроенной сортировки UTF-8 в соответствии с содержимым части ключа сгенерированных данных. Основной порядок вывода следующий:

  • null

  • false

  • true

  • Числа

  • Текст (с учётом регистра, сначала строчные буквы)

  • Массивы (в соответствии со значениями каждого элемента, по порядку)

  • Объекты (в соответствии со значениями ключей, в порядке ключей)

Запрос:

GET /db/_design/test/_view/sorting HTTP/1.1
Accept: application/json
Host: localhost:5984

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 10:09:25 GMT
ETag: "8LA1LZPQ37B6R9U8BK9BGQH27"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset": 0,
    "rows": [
        {
            "id": "dummy-doc",
            "key": null,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": false,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": true,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 0,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 1,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 10,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 42,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "10",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "hello",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "Hello",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "\u043f\u0440\u0438\u0432\u0435\u0442",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [
                1,
                2,
                3
            ],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [
                2,
                3
            ],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [
                3
            ],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": {},
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": {
                "foo": "bar"
            },
            "value": null
        }
    ],
    "total_rows": 17
}

Порядок возвращаемых данных представления можно изменить на обратный, задав для значения запроса descending значение true:

Запрос:

GET /db/_design/test/_view/sorting?descending=true HTTP/1.1
Accept: application/json
Host: localhost:5984

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 10:09:25 GMT
ETag: "Z4N468R15JBT98OM0AMNSR8U"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset": 0,
    "rows": [
        {
            "id": "dummy-doc",
            "key": {
                "foo": "bar"
            },
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": {},
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [
                3
            ],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [
                2,
                3
            ],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [
                1,
                2,
                3
            ],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": [],
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "\u043f\u0440\u0438\u0432\u0435\u0442",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "Hello",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "hello",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": "10",
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 42,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 10,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 1,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": 0,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": true,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": false,
            "value": null
        },
        {
            "id": "dummy-doc",
            "key": null,
            "value": null
        }
    ],
    "total_rows": 17
}

Порядок сортировки и startkey/endkey

Направление сортировки применяется до фильтрации с использованием аргументов запроса startkey и endkey. Например, следующий запрос корректно перечислит все соответствующие записи между carrots и egg:

GET http://couchdb:5984/recipes/_design/recipes/_view/by_ingredient?startkey="carrots"&endkey="egg" HTTP/1.1
Accept: application/json

Если изменить порядок вывода на обратный с помощью аргумента запроса descending, запрос к представлению вернёт ответ 400 Bad Request:

GET /recipes/_design/recipes/_view/by_ingredient?descending=true&startkey="carrots"&endkey="egg" HTTP/1.1
Accept: application/json
Host: localhost:5984

{
    "error": "query_parse_error",
    "reason": "No rows can match your key range, reverse your start_key and end_key or set descending=false",
    "ref": 3986383855
}

Результатом будет ошибка, поскольку записи в представлении сначала меняются местами и только затем применяется фильтр по ключу, поэтому endkey для «egg» будет обнаружен раньше, чем startkey для «carrots».

Вместо этого следует изменить порядок значений, передаваемых параметрам startkey и endkey, чтобы он соответствовал сортировке ключей по убыванию. Изменив предыдущий пример следующим образом:

GET /recipes/_design/recipes/_view/by_ingredient?descending=true&startkey="egg"&endkey="carrots" HTTP/1.1
Accept: application/json
Host: localhost:5984

Использование key, keys, start_key и end_key

key: ведёт себя так же, как при задании start_key=$key&end_key=$key.

keys: между одноэлементным keys и многоэлементным keys есть некоторые различия. Одноэлементный keys следует обрабатывать как key.

$ curl -X POST http://adm:pass@127.0.0.1:5984/db/_bulk_docs \
       -H 'Content-Type: application/json' \
       -d '{"docs":[{"_id":"a","key":"a","value":1},{"_id":"b","key":"b","value":2},{"_id":"c","key":"c","value":3}]}'
$ curl -X POST http://adm:pass@127.0.0.1:5984/db \
       -H 'Content-Type: application/json' \
       -d '{"_id":"_design/ddoc","views":{"reduce":{"map":"function(doc) { emit(doc.key, doc.value) }","reduce":"_sum"}}}'

$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?key="a"'
{"rows":[{"key":null,"value":1}]}

$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?keys="[\"a\"]"'
{"rows":[{"key":null,"value":1}]}

$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?keys=\["a","b"\]'
{"error":"query_parse_error","reason":"Multi-key fetches for reduce views must use `group=true`"}

$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?keys=\["a","c"\]&group=true'
{"rows":[{"key":"a","value":1},{"key":"c","value":3}]}

keys несовместим с key, start_key и end_key, однако key можно использовать вместе с start_key и end_key. Разный порядок параметров запроса может привести к разным ответам. Приоритет определяется порядком указания параметров запроса. Обычно действует последний аргумент.

# start_key=a and end_key=b
$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?key="a"&endkey="b"'
{"rows":[{"key":null,"value":3}]}

# start_key=a and end_key=a
$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?endkey="b"&key="a"'
{"rows":[{"key":null,"value":1}]}

# start_key=a and end_key=a
$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?endkey="b"&keys=\["a"\]'
{"rows":[{"key":null,"value":1}]}

$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?endkey="b"&keys=\["a","b"\]'
{"error":"query_parse_error","reason":"Multi-key fetches for reduce views must use `group=true`"}

$ curl http://adm:pass@127.0.0.1:5984/db/_design/ddoc/_view/reduce'?endkey="b"&keys=\["a","b"\]&group=true'
{"error":"query_parse_error","reason":"`keys` is incompatible with `key`, `start_key` and `end_key`"}

Необработанная сортировка

По умолчанию CouchDB использует драйвер ICU для сортировки результатов представления. Для более быстрой сборки представлений можно использовать двоичную сортировку, если сортировка Unicode не важна.

Чтобы использовать необработанную сортировку, добавьте "options":{"collation":"raw"} в объект представления документа проекта. После этого представления будут сгенерированы заново, и для соответствующего представления будет применён новый порядок.

См. также

Сортировка представлений

Использование ограничений и пропуск строк

По умолчанию представления возвращают все результаты. Это подходит, когда результатов немного, но может привести к проблемам, если их миллиарды: клиенту, возможно, придётся прочитать их все и использовать всю доступную память.

Однако количество строк результата можно сократить, указав параметр запроса limit. Например, запрос списка рецептов с помощью представления by_title с ограничением в 5 вернёт только 5 записей, хотя всего в представлении 2667 записей:

Запрос:

GET /recipes/_design/recipes/_view/by_title?limit=5 HTTP/1.1
Accept: application/json
Host: localhost:5984

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 09:14:13 GMT
ETag: "9Q6Q2GZKPH8D5F8L7PB6DBSS9"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset" : 0,
    "rows" : [
        {
            "id" : "3-tiersalmonspinachandavocadoterrine",
            "key" : "3-tier salmon, spinach and avocado terrine",
            "value" : [
                null,
                "3-tier salmon, spinach and avocado terrine"
            ]
        },
        {
            "id" : "Aberffrawcake",
            "key" : "Aberffraw cake",
            "value" : [
                null,
                "Aberffraw cake"
            ]
        },
        {
            "id" : "Adukiandorangecasserole-microwave",
            "key" : "Aduki and orange casserole - microwave",
            "value" : [
                null,
                "Aduki and orange casserole - microwave"
            ]
        },
        {
            "id" : "Aioli-garlicmayonnaise",
            "key" : "Aioli - garlic mayonnaise",
            "value" : [
                null,
                "Aioli - garlic mayonnaise"
            ]
        },
        {
            "id" : "Alabamapeanutchicken",
            "key" : "Alabama peanut chicken",
            "value" : [
                null,
                "Alabama peanut chicken"
            ]
        }
    ],
    "total_rows" : 2667
}

Чтобы пропустить некоторые записи, можно использовать параметр запроса skip:

Запрос:

GET /recipes/_design/recipes/_view/by_title?limit=3&skip=2 HTTP/1.1
Accept: application/json
Host: localhost:5984

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 21 Aug 2013 09:14:13 GMT
ETag: "H3G7YZSNIVRRHO5FXPE16NJHN"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset" : 2,
    "rows" : [
        {
            "id" : "Adukiandorangecasserole-microwave",
            "key" : "Aduki and orange casserole - microwave",
            "value" : [
                null,
                "Aduki and orange casserole - microwave"
            ]
        },
        {
            "id" : "Aioli-garlicmayonnaise",
            "key" : "Aioli - garlic mayonnaise",
            "value" : [
                null,
                "Aioli - garlic mayonnaise"
            ]
        },
        {
            "id" : "Alabamapeanutchicken",
            "key" : "Alabama peanut chicken",
            "value" : [
                null,
                "Alabama peanut chicken"
            ]
        }
    ],
    "total_rows" : 2667
}

Предупреждение

Не рекомендуется использовать параметры limit и skip для разбиения результатов на страницы. Узнайте в разделе рецепт постраничной навигации, почему это так и как сделать лучше.

Отправка нескольких запросов к представлению

Добавлено в версии 2.2.

POST /{db}/_design/{ddoc}/_view/{view}/queries

Выполняет несколько указанных запросов к функции представления из указанного документа проекта.

Параметры:
  • db – Имя базы данных

  • ddoc – Имя документа проекта

  • view – Имя функции представления

Заголовки запроса:
  • Content-Type –

    • application/json

  • Accept –

    • application/json

Объект JSON запроса:
  • queries – Массив объектов запросов с полями, содержащими параметры каждого отдельного запроса к представлению. Имена полей и их значения совпадают с параметрами запроса обычного запроса к представлению.

Заголовки ответа:
  • Content-Type –

    • application/json

  • ETag – Подпись ответа

  • Transfer-Encoding – chunked

Объект JSON ответа:
  • results (array) – Массив объектов результатов — по одному для каждого запроса. Каждый объект результата содержит те же поля, что и ответ на обычный запрос к представлению.

Коды состояния:
  • 200 OK – Запрос успешно выполнен

  • 400 Bad Request – Недопустимый запрос

  • 401 Unauthorized – Требуется разрешение на чтение

  • 403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными

  • 404 Not Found – Указанная база данных, документ проекта или представление не найдены

  • 500 Internal Server Error – Ошибка выполнения функции представления

Запрос:

POST /recipes/_design/recipes/_view/by_title/queries HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: localhost:5984

{
    "queries": [
        {
            "keys": [
                "meatballs",
                "spaghetti"
            ]
        },
        {
            "limit": 3,
            "skip": 2
        }
    ]
}

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Wed, 20 Dec 2016 11:17:07 GMT
ETag: "1H8RGBCK3ABY6ACDM7ZSC30QK"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "results" : [
        {
            "offset": 0,
            "rows": [
                {
                    "id": "SpaghettiWithMeatballs",
                    "key": "meatballs",
                    "value": 1
                },
                {
                    "id": "SpaghettiWithMeatballs",
                    "key": "spaghetti",
                    "value": 1
                },
                {
                    "id": "SpaghettiWithMeatballs",
                    "key": "tomato sauce",
                    "value": 1
                }
            ],
            "total_rows": 3
        },
        {
            "offset" : 2,
            "rows" : [
                {
                    "id" : "Adukiandorangecasserole-microwave",
                    "key" : "Aduki and orange casserole - microwave",
                    "value" : [
                        null,
                        "Aduki and orange casserole - microwave"
                    ]
                },
                {
                    "id" : "Aioli-garlicmayonnaise",
                    "key" : "Aioli - garlic mayonnaise",
                    "value" : [
                        null,
                        "Aioli - garlic mayonnaise"
                    ]
                },
                {
                    "id" : "Alabamapeanutchicken",
                    "key" : "Alabama peanut chicken",
                    "value" : [
                        null,
                        "Alabama peanut chicken"
                    ]
                }
            ],
            "total_rows" : 2667
        }
    ]
}

Copyright © 2025 The Apache Software Foundation — Licensed under the Apache License 2.0
https://docs.couchdb.org/en/3.5.1/api/ddoc/views.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API