Rest 在Couchbase中添加文档和缺少JSON正文

Rest 在Couchbase中添加文档和缺少JSON正文,rest,postman,couchbase,Rest,Postman,Couchbase,我正在尝试使用Couchbase REST API将文档添加到现有文档中。我只是在写代码的时候在Postman中测试这个 POST: http://<ip>:8091/pools/default/buckets/<bucketname>/docs/testdoc1?rev=1 Headers: Accept: application/json Authorization : xxxxx Body: Raw JSON (application/json) {

我正在尝试使用Couchbase REST API将文档添加到现有文档中。我只是在写代码的时候在Postman中测试这个

POST:

http://<ip>:8091/pools/default/buckets/<bucketname>/docs/testdoc1?rev=1

Headers:

Accept: application/json
Authorization : xxxxx

Body:

Raw JSON (application/json)
{
  "Name": "xxx",
  "Address": "yyy",
  "Phone number": "xxxx",
  "Badge": "yyy",
  "BadgeType": "xxx"
} 
POST:
http://:8091/pools/default/bucket//docs/testdoc1?rev=1
标题:
接受:application/json
授权:xxxxx
正文:
原始JSON(应用程序/JSON)
{
“名称”:“xxx”,
“地址”:“yyy”,
“电话号码”:“xxxx”,
“徽章”:“yyy”,
“徽章类型”:“xxx”
} 
当我在邮递员上面发送时,它正在添加这个新文档。在couchbase documents/bucket下,但在body字段上显示“Binary Document,base64不可用”

我甚至尝试从我的html代码,但json正文在couchbase端并没有收到

<!DOCTYPE html>
<html>
<body>

<input type="submit" value="Start" onclick="submit()">

<script type="text/javascript">
var params = {
  "Name": "xxx",
  "Address": "yyy",
  "Phone number": "xxxx",
  "Badge": "yyy",
  "BadgeType": "xxx"
} 
    function submit() {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                alert(xhr.response);
            }
        }
        xhr.open('post', 'http://<ip>:8091/pools/default/buckets/<buckname>/docs/testdochtml?rev=1', true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.setRequestHeader('Accept', 'application/json');
        xhr.setRequestHeader('Authorization', 'Basic ' + 'xxxxxxx');

        xhr.send(JSON.stringify(params));
    }
</script>

<p>Click on the submit button.</p>

</body>
</html>

变量参数={
“名称”:“xxx”,
“地址”:“yyy”,
“电话号码”:“xxxx”,
“徽章”:“yyy”,
“徽章类型”:“xxx”
} 
函数提交(){
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=函数(){
if(xhr.readyState==4){
警报(xhr.响应);
}
}
xhr.open('post','http://:8091/pools/default/bucket//docs/testdochtml?rev=1',true);
setRequestHeader('Content-Type','application/json');
setRequestHeader('Accept','application/json');
setRequestHeader('Authorization','Basic'+'xxxxxxx');
send(JSON.stringify(params));
}
点击提交按钮


有人能告诉我为什么JSON不能以正确的方式进入couchbase吗?

首先:据我所知,这个端点不受支持,也没有文档记录。如果你看到某个地方支持它,请告诉我,因为我认为这需要纠正。您应该使用其中一个SDK(Java、.NET、Node等)

话虽如此,我还是能通过邮递员让它工作。您不能只发送原始JSON作为文档。您需要发布编码的表单数据。该端点期望的值之一是“value”,它包含编码的JSON文档

下面是我所做的一个例子(我称我的水桶为“so”):

请注意,上面的值只是您问题中URL编码的JSON(Postman为我编码了它,Postman也必须自己添加了缓存控制头,因为我没有指定):


嗨,马修,谢谢你的回答。我不知道如何在Postman中发布编码表单数据?请给我一些样品参考。此外,我还尝试了示例HTML代码(请参考问题以查看粘贴的代码),但没有成功。如果我做错了什么,请您查看并告诉我。因为CORS,它无法从HTML工作,并且您不能关闭它。Couchbase服务器的RESTAPI不是设计用来从客户端JavaScript调用的。你可能想看看同步网关。这里有一个视频,它在《邮递员》中工作,但同样,这不是你应该做的事情。您应该使用SDK来实现这一点-谢谢您,非常感谢。
POST /pools/default/buckets/so/docs/testdoc2 HTTP/1.1
Host: localhost
cache-control: no-cache
Postman-Token: ba87ef4e-4bba-42b4-84da-ae775b26dbcb
value=%7B%0A%09%22Name%22%3A+%22xxx%22%2C%0A%09%22Address%22%3A+%22yyy%22%2C%0A%09%22Phone+number%22%3A+%22xxxx%22%2C%0A%09%22Badge%22%3A+%22yyy%22%2C%0A%09%22BadgeType%22%3A+%22xxx%22%0A%7D%0A