为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
桃花长相依 2021-11-01 16:53:49
我编写了以下代码来向我的 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>有人可以指出我在上面的代码中缺少什么吗?
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

对于PATCH请求,您需要传递一个带有补丁命令(json 格式)的数组来执行。

要更改title属性,它将如下所示:

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



查看完整回答
反对 回复 2021-11-01
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

PATCHPOST是不同的http动词。

我认为你只需要改变这一点;

 req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))

 req, _ := http.NewRequest("PATCH", url, bytes.NewBuffer(jsonStr))

或者至少这是第一件事。根据评论,我推测您的请求正文也很糟糕。


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信