go - 如何使用 golang 向 raven db 服务器发出 HTTP 补丁请求?

标签 go ravendb ravendb-http

我已经编写了以下代码来向我的 raven 数据库中的文档 1 添加一个标题字段。

url := "http://localhost:8083/databases/drone/docs/1"
fmt.Println("URL:>", url)

var jsonStr = []byte(`{"title":"Buy cheese and bread for breakfast."}`)
req, _ := http.NewRequest("PATCH", url, bytes.NewBuffer(jsonStr))
req.Header.Set("X-Custom-Header", "myvalue")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    panic(err)
}
defer resp.Body.Close()

body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("response Body:", string(body))

我不明白为什么它不起作用?我收到以下响应正文,这不是我所期望的。我期待成功的回应。

<html>
<body>
    <h1>Could not figure out what to do</h1>
    <p>Your request didn't match anything that Raven knows to do, sorry...</p>
</body>

有人可以指出我在上面的代码中遗漏了什么吗?

最佳答案

对于 PATCH请求时,需要传递一个数组,其中包含补丁命令(json格式)才能执行。

要更改 title 属性,它看起来像:

var jsonStr = []byte(`[{"Type": "Set", "Name": "title", "Value": "Buy cheese and bread for breakfast."}]`)

关于go - 如何使用 golang 向 raven db 服务器发出 HTTP 补丁请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255599/

相关文章:

ravendb - 如何使用 HTTP API 从 Raven 获取文档

go - Go堆接口(interface)实现的优先级队列大小限制

c# - 为什么 Raven 会为我的新文档生成一个已经存在的文档 ID?

http - 将对 GO web 服务的访问限制为来自本地子网的客户端

backup - 乌鸦数据库 : How is 'smuggler' different from 'Import/Export' ?

http - 如何使用 RavenDB 中的 key 诊断和防止 get 时的 http 超时

.net - 使用 RavenDB 客户端 API 发送客户端证书

c - 从 Golang 中的 c 函数返回字符串

http - docker如何设法获得200而不是401的返回码