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

时间:2020-09-24 10:05:26

标签: rest couchbase

我想使用REST API更新沙发文档

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

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

CURL:

SELECT i.Title,i.Attachment,i.Name,i.FirstTextArea,i.Radio,i.CheckBox,i.FileUpload,'FirstGroupitem' as FirstGroupitem,
 a.Address, a.Age,a.TestField,a.Country,a.SecondTextArea 
FROM OPENJSON(@json) 
WITH (
    Title  VARCHAR(max) N'$.Title',
    Attachment  VARCHAR(max) N'$.Attachment',
    Name  VARCHAR(max) N'$.Name',
    FirstTextArea  VARCHAR(max) N'$.FirstTextArea',
    Radio  VARCHAR(max) N'$.Radio',
    CheckBox  VARCHAR(max) N'$.CheckBox',
    FileUpload  VARCHAR(max) N'$.FileUpload',
    FirstGroupitem nvarchar(max) '$.FirstGroupitem' AS JSON
) AS i
CROSS APPLY (
   SELECT *
   FROM OPENJSON(i.FirstGroupitem)
   WITH (
     Address  VARCHAR(max) N'$.Address',
     Age  VARCHAR(max) N'$.Age',
     TestField  VARCHAR(max) N'$.TestField',
     Country  VARCHAR(max) N'$.Country',
     SecondTextArea  VARCHAR(max) N'$.SecondTextArea'
   )
) a

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

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 --location --request GET 'ilceabcd1233.corp.abcd.com:8091/pools/default/buckets/{bucketName}/docs/{documentId}' \
--header 'Accept: application/json' \
--header 'Authorization: Basic QWRtaW5pc3RyYXRvcjpBZG1pbmlzdHJhdG9yff'

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

“二进制文档。Base64不可用”

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

1 个答案:

答案 0 :(得分:1)

这里的窍门是该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)来读取/写入文档。 REST API用于群集管理,而不用于CRUD。