登录
首页 >  Golang >  Go问答

带有 urlencoded body 的 http 补丁请求

来源:stackoverflow

时间:2024-02-27 08:48:24 357浏览 收藏

本篇文章向大家介绍《带有 urlencoded body 的 http 补丁请求》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我想通过提供的 api 将我的存储库更新到 docker hub。我用 go 编写了一个小程序,它读取 readme.md 文件的内容并将内容设置为存储库的描述。

程序使用给定参数的登录凭据查询 jwt 令牌。然后,jwt 令牌将附加到补丁请求以进行身份​​验证。对于 http 补丁请求,我得到状态代码 200,但存储库的描述未更新。

以下是该函数的摘录:

data := url.values{}
data.set("full_description", repository.fulldescription)

req, err := http.newrequest(http.methodpatch, patchurl.string(), strings.newreader(data.encode()))
if err != nil {
  return nil, fmt.errorf("can not create request to update readme: %v", err)
}
req.header.add("authorization", fmt.sprintf("jwt %v", token.token))
req.header.add("content-type", "application/x-www-form-urlencoded")

我的存储库中提供了完整的功能。

经过一段时间的搜索,我发现了一个类似的项目,它通过curl发送请求。使用了curl的标志--urlencode。如果没有此标志,描述将不会更新。

# Send a PATCH request to update the description of the repository
echo "Sending PATCH request"
REPO_URL="https://hub.docker.com/v2/repositories/${DOCKERHUB_REPOSITORY}/"
RESPONSE_CODE=$(curl -s --write-out %{response_code} --output /dev/null -H "Authorization: JWT ${TOKEN}" -X PATCH --data-urlencode full_description@${README_FILEPATH} ${REPO_URL})
echo "Received response code: $RESPONSE_CODE"

项目完整源代码托管在github上

现在我问自己一个问题,如何对请求的内容进行编码,以便 api 成功接受补丁请求?


解决方案


您提到的curl请求使用的是Patch请求,您使用的是Post请求。请尝试使用 http.MethodPatch。

理论要掌握,实操不能落!以上关于《带有 urlencoded body 的 http 补丁请求》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>