如何使用golang向raven db server发出HTTP Patch请求?

时间:2015-08-27 17:14:29

标签: go ravendb ravendb-http

我编写了以下代码,在我的乌鸦数据库中为标题1添加标题字段。 url:=" http:// localhost:8083 / databases / drone / docs / 1" fmt.Println(" URL:>",url) var jsonStr = [] byte(`{" title":"早餐买奶酪和面包。"}`) req,_:= http.NewRequest(" PATCH",url,bytes.NewBuffer(jsonStr)) req.Header.Set(" X-Custom-Header"," myvalue") req.Header.Set(" Content-Type"," application / json") 客户:=& http.Client {} resp,错误:= client.Do(req) if err!= nil {     恐慌(ERR) } 推迟resp.Body.Close() body,_:= ioutil.ReadAll(resp.Body) fmt.Println("响应正文:",字符串(正文)) 我不明白为什么它不起作用?我得到以下回应的身体,这不是我所期待的。我期待成功的回应。 < HTML> <身体GT;     < h1>无法弄清楚要做什么< / h1>     < p>您的请求并不匹配Raven知道要做的任何事情,抱歉......< / p> < /体> 有人可以指出我在上面的代码中缺少什么?

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

PATCHPOST是不同的http动词。

我认为你只需要改变它;

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

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

或者至少这是第一件事。根据评论,我会推测你的请求正文也不好。