【问题标题】:Adding document in Couchbase and missing JSON body在 Couchbase 中添加文档并缺少 JSON 正文
【发布时间】:2018-11-03 04:57:48
【问题描述】:

我正在尝试使用 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"
} 

当我在 Postman 中发送上面时,它正在添加这个新文档。在 couchbase 文档/存储桶下,但在 body 字段上显示为“二进制文档,base64 不可用”

我什至从我的 html 代码中尝试过,但是在 couchbase 端没有收到 json 正文。

<!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>

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

【问题讨论】:

    标签: rest postman couchbase


    【解决方案1】:

    首先:据我所知,此端点不受支持,并且没有记录。如果您在某处看到它支持,请告诉我,因为我认为这需要更正。您应该改用其中一种 SDK(Java、.NET、Node 等)。

    话虽如此,我可以通过 Postman 让它工作。您不能只发送原始 JSON 作为文档。您需要 POST 编码的表单数据。此端点期望的值之一是“值”,其中包含编码的 JSON 文档。

    这是我所做的一个示例(我称我的存储桶为“so​​”):

    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
    

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

    【讨论】:

    • 嗨,马修,感谢您的回答。我没有得到如何在 Postman 中发布编码的表单数据?请给我一些示例参考。另外,我已经尝试过示例 HTML 代码(请参阅问题以查看粘贴的代码),但没有奏效。如果我做错了什么,请你看看并告诉我。
    • 由于 CORS,它无法在 HTML 中运行,而且您无法将其关闭。 Couchbase Server 的 REST API 并非设计为从客户端 JavaScript 调用。您可能想改为查看 Sync Gateway。
    • 这是一个在 Postman 中工作的视频,但同样,这不是你应该做的事情。您应该使用 SDK 来代替 - youtube.com/watch?v=4RZ4LqZw8QQ
    • 谢谢你并感谢它。
    猜你喜欢
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多