Работа с CouchDB из командной строки

Узнайте, как использовать утилиту Curl для работы с CouchDB из командной строки. Хотя веб-интерфейс администратора Futon является удобным способом выполнения простых операций с CouchDB, API — это наиболее гибкий, быстрый и мощный способ выполнения стандартных операций CRUD (Create, Read, Update, Delete) в CouchDB, как вручную, так и с помощью скриптов.

Основы работы с CouchDB

После установки CouchDB вы можете получить доступ к его API через HTTP порт 5984, используя стандартные запросы GET и PUT.

Из командной строки вы можете использовать Curl для отправки этих запросов.

Вы можете проверить это с помощью команды:

curl http://127.0.0.1:5984/

Сервер ответит приветственным сообщением:

{"couchdb":"Welcome","uuid":"f33e87d034bb8c1227f866445a977555","version":"1.6.1","vendor":{"version":"16.04","name":"Ubuntu"}}

Используйте флаг -X, чтобы указать метод (например, GET или PUT) для Curl. Например, команда для получения списка всех баз данных в установке CouchDB имеет следующий вид:

curl -X GET http://127.0.0.1:5984/_all_dbs

Создать базу данных или документ

Используйте метод PUT для создания базы данных или документа (записи). Например, чтобы создать базу данных с именем reviews, выполните следующую команду:

curl -X PUT http://127.0.0.1:5984/reviews

Чтобы добавить документ в базу данных, используйте curl -X PUT с именем вашей базы данных и уникальным идентификатором записи, которую вы хотите создать, затем используйте -d для передачи информации о записи в формате JSON.

Например, следующая команда вставит запись с ID 01 в базу данных отзывов:

curl -X PUT http://127.0.0.1:5984/reviews/01 -d '{"reviewer_name":"Ben", "stars":"4", "details":"Love the calzone!"}'

Получение и чтение информации о базе данных или документе

Используйте метод GET для получения и чтения информации о базе данных или документе. Чтобы получить документ, укажите его ID в конце URL.

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

curl -X GET http://127.0.0.1:5984/reviews/01

Сервер ответит содержимым документа в формате JSON:

{
"_id":"01",
"_rev":"1-8ce1d23b7455705c3c2cbeeb86d8ccf5",
"reviewer_name":"Ben",
"stars":"4",
"details":"Love the calzone!"
}

Обновление документа

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

Чтобы обновить документ, вам нужно сообщить CouchDB, какую ревизию вы обновляете. Если номер ревизии совпадает, CouchDB обновит информацию и создаст новый номер ревизии. (Если номер ревизии не совпадает, CouchDB вернет ошибку 409 конфликта).

Чтобы обновить документ, используйте метод PUT и укажите номер ревизии. Вы можете обновить либо весь документ, либо только одно поле.

В этом примере мы обновим количество звезд в рейтинге с 4 до 5:

curl -X PUT http://127.0.0.1:5984/reviews/01 -d '{"_id":"01", "stars":"5", "_rev":"1-8ce1d23b7455705c3c2cbeeb86d8ccf5"}'

Сервер вернет ответ, содержащий «ok» и новый номер ревизии:

{"ok":true,"id":"01","rev":"2-55b1c6edb9a0fd8eb58bd73b8e0058d5"}

Удаление записи

Чтобы удалить запись, используйте метод DELETE и укажите ID записи и номер последней ревизии. Например, команда для удаления записи, которую мы создали выше, следующая:

curl -X DELETE http://127.0.0.1:5984/reviews/01?rev=2-55b1c6edb9a0fd8eb58bd73b8e0058d5

Сервер вернет ответ, содержащий «ok» и новый номер ревизии:

{"ok":true,"id":"01","rev":"3-ec3f3491444854d08aaa7dd6ffe68670"}

Это происходит потому, что для сохранения функций репликации CouchDB записи на самом деле не удаляются. Вместо этого добавляется ревизия, которая содержит информацию об удалении, и запись будет недоступна при стандартном запросе.

Например, если мы попытаемся просмотреть эту запись снова, сервер ответит «не найдено»:

user@localhost:$ curl -X GET http://127.0.0.1:5984/reviews/01
{"error":"not_found","reason":"deleted"}

Оцените статью
cdelat.ru
Добавить комментарий