如何使用 golang 向 raven db 服务器发出 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>

有人可以指出我在上面的代码中缺少什么吗?


桃花长相依
浏览 228回答 2
2回答

慕丝7291255

对于PATCH请求,您需要传递一个带有补丁命令(json 格式)的数组来执行。要更改title属性,它将如下所示:var&nbsp;jsonStr&nbsp;=&nbsp;[]byte(`[{"Type":&nbsp;"Set",&nbsp;"Name":&nbsp;"title",&nbsp;"Value":&nbsp;"Buy&nbsp;cheese&nbsp;and&nbsp;bread&nbsp;for&nbsp;breakfast."}]`)

胡子哥哥

PATCH和POST是不同的http动词。我认为你只需要改变这一点;&nbsp;req,&nbsp;_&nbsp;:=&nbsp;http.NewRequest("POST",&nbsp;url,&nbsp;bytes.NewBuffer(jsonStr))到&nbsp;req,&nbsp;_&nbsp;:=&nbsp;http.NewRequest("PATCH",&nbsp;url,&nbsp;bytes.NewBuffer(jsonStr))或者至少这是第一件事。根据评论,我推测您的请求正文也很糟糕。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go