
数据库文档数据库后端【免费下载链接】couchdbSeamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability项目地址https://gitcode.com/gh_mirrors/co/couchdb点击查看免费下载cURL 是 CouchDB 开发者最常用的“瑞士军刀”——它跨平台Unix、Linux、macOS、Windows 均可使用可以直接从命令行发起原生 HTTP 请求让你无需任何编程语言或图形界面即可完整地操作 CouchDB 的 REST API。本文以仓库内 curl.rst 文档为主线带你从最简单的 GET 欢迎页请求开始逐步掌握用-X指定 HTTP 方法、用-H设置请求头、用-d提交 JSON 数据这一整套核心操作并结合 couch_httpd_misc_handlers.erl 等源码讲清每个请求背后 CouchDB 的真实处理逻辑。读完本文你将能用几条命令完成 CouchDB 的“建库—写文档—读文档”全流程并具备自行验证 HTTP API 参考文档中所有示例的能力。为什么用 cURL 与 CouchDB 打交道CouchDB 对外暴露的是一套基于 HTTP/JSON 的 REST API你发送 HTTP 请求CouchDB 返回 JSON 字符串作为响应。curl正是直接面向 HTTP 协议的命令行工具它让你能看到请求与响应“线缆之下”的原始细节非常适合调试和快速验证。CouchDB 默认监听127.0.0.1:5984该端口由[chttpd]配置段控制详见 config/http.rst 中的port 5984与bind_address 127.0.0.1所有对 CouchDB 的正常使用都通过这个端口进行。第一个请求获取服务器欢迎信息GET最简单的请求只需在curl后直接给出 URLcurl默认发送GET请求shell curl http://127.0.0.1:5984CouchDB 返回如下 JSON原文输出经格式化以便阅读{ couchdb: Welcome, version: 3.0.0, git_sha: 83bdcf693, uuid: 56f16e7c93ff4a2dc20eb6acc7000b71, features: [ access-ready, partitioned, pluggable-storage-engines, reshard, scheduler ], vendor: { name: The Apache Software Foundation } }这个“欢迎页”响应可以充当两个用途一是作为 CouchDB 是否在运行的“健康检查”二是让依赖特定版本 CouchDB 的客户端程序读取version字段做版本校验。从源码看这一响应由 couch_httpd_misc_handlers.erl 中的handle_welcome_req/2函数生成它对GET请求返回couchdb欢迎词、uuid取自couch_server:get_uuid()和version取自couch_server:get_version()并附加[vendor]配置段中的厂商信息。也就是说这个 JSON 是运行时动态拼装的其中version、uuid会随你的实际安装而变化features列表则反映了当前版本启用的能力如分区数据库、可插拔存储引擎、reshard、scheduler 等。该欢迎处理函数被注册在 couch.app.src 的路由表中映射路径为/。特殊字符与 URL 引号保护你的命令当 URL 中包含、!、?这类特殊字符时Shell 可能会将其解释为元字符而破坏命令因此建议用单引号把整个 URL 括起来。例如请求多个 UUIDshell curl http://couchdb:5984/_uuids?count5单引号确保?count5作为 URL 查询串的一部分原样传递给 CouchDB。从源码看_uuids端点由handle_uuids_req/1处理couch_httpd_misc_handlers.erlcount参数默认值为1上限受[uuids] max_count配置约束默认1000超过上限会返回count parameter too large错误负数或非整数则返回count must be a positive integer。Windows 平台双引号的特殊用法在 Microsoft Windows 的命令行环境中单引号不被识别因此凡是文档示例中出现单引号的地方都要改用双引号并把内部的双引号写成两对。例如原文档中的命令shell curl -X PUT http://adm:pass127.0.0.1:5984/demo/doc -d {motto: I love gnomes}在 Windows 上应替换为shell curl -X PUT http://adm:pass127.0.0.1:5984/demo/doc -d {motto: I love gnomes}如果你更喜欢也可以使用^或\来转义引号字符串中的双引号字符。用 -X 显式指定 HTTP 方法创建与查看数据库curl默认只发GET请求但 REST 操作需要各种方法。使用-X选项可以显式设置 HTTP 方法。例如创建数据库数据库名写在 URL 中方法为PUTshell curl -X PUT http://adm:pass127.0.0.1:5984/demo {ok:true}URL 中的adm:pass是 CouchDB 的 Basic Auth 凭据写法用户名:密码主机。查询数据库信息则使用GETshell curl -X GET http://adm:pass127.0.0.1:5984/demo { compact_running : false, doc_count : 0, db_name : demo, purge_seq : 0, committed_update_seq : 0, doc_del_count : 0, disk_format_version : 5, update_seq : 0, instance_start_time : 0, disk_size : 79 }这里返回的是数据库的元信息doc_count文档数、disk_size磁盘占用字节、update_seq更新序号等。如果你再次PUT一个已存在的同名数据库CouchDB 会返回错误例如{error:file_exists,reason:The database could not be created, the file already exists.}。提示使用-vverbose选项可以让curl打印完整的请求头与响应头包括HTTP/1.1 201 Created、Server: CouchDB (Erlang/OTP)、Content-Type、ETag等这是排查网络与 API 问题的最快捷手段。更详细的 HTTP 头部逐行解读可以参见仓库内的 Core API 文档。用 -H 设置请求头声明 Content-Type某些操作必须显式声明请求体的媒体类型通过-H选项添加Content-Type头即可shell curl -H Content-Type: application/json http://127.0.0.1:5984/_uuids告诉 CouchDB“我发送的是 JSON”可以避免服务端对请求体的错误解析。用 -d 提交 JSON 数据创建与读取文档-d选项用于提交请求体payload数据非常适合发送 JSON 结构。例如向demo数据库提交一个简单文档POST到数据库 URLCouchDB 自动生成文档 IDshell curl -H Content-Type: application/json \ -X POST http://adm:pass127.0.0.1:5984/demo \ -d {company: Example, Inc.} {ok:true,id:8843faaf0b831d364278331bc3001bd8, rev:1-33b9fbce46930280dab37d672bbc8bb9}-d后面的参数就是我们要提交的 JSON 文档。响应中的id是 CouchDB 自动生成的文档 IDrev是文档的第一版修订号。随后即可用该 ID 读取文档shell curl -X GET http://adm:pass127.0.0.1:5984/demo/8843faaf0b831d364278331bc3001bd8 {_id:8843faaf0b831d364278331bc3001bd8, _rev:1-33b9fbce46930280dab37d672bbc8bb9, company:Example, Inc.}注意 CouchDB 在保存文档时自动补充了_id与_rev两个元数据字段。_rev是 CouchDB 多版本并发控制MVCC的基石更新或删除文档时必须带上当前_rev否则 CouchDB 会返回{error:conflict,reason:Document update conflict.}——这保证了“谁先保存成功谁生效”避免静默覆盖他人修改。更深层的文档、修订与 MVCC 机制可阅读 Core API 文档。如果不想自己拼 UUID 作为文档 ID也可以直接请求/_uuids端点让 CouchDB 生成shell curl -X GET http://127.0.0.1:5984/_uuids {uuids:[6e1295ed6c29495e54cc05947f18c8af]}需要多个时用?count10指定数量。UUID 的生成算法由[uuids] algorithm配置决定couch_uuids.erl 支持random、sequential、utc_random、utc_id四种策略默认sequential以保证文档 ID 在复制场景下也几乎不会冲突。从示例到全量 API 参考本文展示的“URL HTTP 方法 请求头 payload”模式可以复现仓库 HTTP API 参考中的绝大多数示例参考文档src/docs/src/api/目录下的 Server、Database、Document、Replication 等 API 文档会给出每条接口的 HTTP 命令、URL、需要提交的 payload 信息以及预期的返回值你完全可以用本文的curl命令行技巧逐一验证。继续深入可参阅 Core API 文档含 HTTP 状态码、ETag/Location头、修订与冲突机制以及 Getting Started 快速入门含建库、_all_dbs列表与视图体验。赞分享数据库文档数据库后端【免费下载链接】couchdbSeamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability项目地址https://gitcode.com/gh_mirrors/co/couchdb点击查看免费下载相关推荐从源码到实践深入理解 ha-bridge 的 Hue 模拟器HueMulator工作原理从源码到实践深入理解 ha bridge 的 Hue 模拟器HueMulator工作原理 ha bridge 是一款强大的智能家居桥接工具它通过模拟 PBotpress Confluence 集成实战指南从 API Token 配置到页面读写与评论交互Botpress Confluence 集成实战指南从 API Token 配置到页面读写与评论交互 本指南围绕 Botpress 仓库中 botpressAI 应用后端JupyterHub REST API 参考与实战指南令牌、作用域、分页与 API 文档导航JupyterHub REST API 参考与实战指南令牌、作用域、分页与 API 文档导航 JupyterHub 在提供多用户 Notebook 服务的同时后端微服务上一篇大疆固件逆向 3 步走从镜像提取到 U-Boot 验签下一篇Weasis免费开源的DICOM医学影像查看器与3D分析工作站完整上手指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考