无法使用 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。
我想用 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。