
Узнайте, как использовать утилиту Curl для работы с CouchDB из командной строки. Хотя веб-интерфейс администратора Futon является удобным способом выполнения простых операций с CouchDB, API — это наиболее гибкий, быстрый и мощный способ выполнения стандартных операций CRUD (Create, Read, Update, Delete) в CouchDB, как вручную, так и с помощью скриптов.
Требования
- Облачный сервер (Ubuntu 16.04) с установленным 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"}