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

I have written the following code to add a title field to the document 1 in my raven database.

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

I don't understand why it is not working? I am getting the following response Body which is not what I am expecting. I am expecting a success response.

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

Can someone please point out what am I missing in the above code?

For PATCH request, you need to pass an array with patch commands (in json format) to execute.

To change the title attribute, it will look like:

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

PATCH and POST are different http verbs.

I think you just need to change this;

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

to

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

Or at least that is the first thing. Based on comments I would speculate the body of your request is also bad.