Rest 在Couchbase中添加文档和缺少JSON正文
我正在尝试使用Couchbase REST API将文档添加到现有文档中。我只是在写代码的时候在Postman中测试这个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) {
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