无法使用 POST REST API 更新 couchbase 文档

Unable to update couchbase document using POST REST API

我想用 REST 更新 couchbase 文档API

ilceabcd1233.corp.abcd.com:8091/pools/default/buckets/{bucketName}/docs/{documentId}

当我在邮递员中点击以下 CURL 命令时,我收到 200 OK 响应代码,响应为空白 json 数组:[]

卷曲:

curl --location --request POST 'ilceabcd1233.corp.abcd.com:8091/pools/default/buckets/{bucketName}/docs/{documentId}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic QWRtaW5pc3RyYXRvcjpBZG1pbmlzdHJhdG9yff' \
--data-raw '{"name": "Nisarg", "age": 50}'

当我通过以下 CURL 检索此文档时:

curl --location --request GET 'ilceabcd1233.corp.abcd.com:8091/pools/default/buckets/{bucketName}/docs/{documentId}' \
--header 'Accept: application/json' \
--header 'Authorization: Basic QWRtaW5pc3RyYXRvcjpBZG1pbmlzdHJhdG9yff'

它响应:

{
    "meta": {
        "id": "112176152456",
        "rev": "4-1637ac65ed7900000000000002000006",
        "att_reason": "invalid_json",
        "expiration": 0,
        "flags": 33554438
    },
    "base64": "",
    "xattrs": {}
}

在 Couchbase 网络控制台上,我看到消息:

"Binary document. Base64 not available"

任何人都可以帮忙吗,我做错了什么?

这里的技巧是 API 实际上不接受 JSON。它正在寻找 application/x-www-form-urlencoded。否则它会假定您正在存储二进制文档。您实际上需要一个表单 value,它本身包含 JSON。例如:

curl --location --request POST 'http://localhost:8091/pools/default/buckets/demo/docs/doc1' \
--header 'Accept: application/json, text/plain, */*' \
--header 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
--header 'Authorization: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==' \
--data-urlencode 'value={"foo": "bar"}'

为了回应我的评论,这是一个未记录、不受支持的端点,实际上仅供内部使用。建议改为使用 SDK(例如 the Couchbase Java SDK)来 read/write 文档。 REST API 用于集群管理,不适用于 CRUD。