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

尝试创建问题时来自 GitHub API 422 的意外错误响应

尝试创建问题时来自 GitHub API 422 的意外错误响应

Go
神不在的星期二 2023-05-22 17:46:20
向 GitHub API V3 发布问题时,我收到了意外响应。即 422 不可处理的实体。但是,错误的详细信息是针对搜索端点而不是 POST 创建端点的。{“消息”:“验证失败”,“错误”:[{“资源”:“搜索”,“字段”:“q”,“代码”:“缺失”}],“documentation_url”:“https:/ /developer.github.com/v3/search "}我的直觉是我弄乱了 json,但它非常简单,我看不到问题所在。我已经尝试过在这里和其他地方发布的各种解决方案,但没有发现我做错了什么。这是一个编码练习,而不是任何用于生产的练习,但让我有点疯狂。在发布之前在调试中测试请求正文是什么。{"title":"Hello World","body":"dfsdfsdf\n"}尝试删除主体,因为它是可选的,同样的问题。在 Debug 中测试请求是 POST 类型在 Debug 中测试授权标头是正确的。删除授权密钥并按预期收到 401。发帖功能:func CreateIssue (issue *NewIssue) (*IssueDetailsResult, error){issueJson, err := json.Marshal(issue)if err != nil {    log.Fatal(err)    os.Exit(1)}req, err := http.NewRequest("POST", github.IssuesURL, bytes.NewBuffer(issueJson))req.Header.Set("Authorization", "token "+os.Getenv("UPGITUSER"))req.Header.Set( "Content-Type", "application/json")client := &http.Client{}resp, err := client.Do(req)if err != nil {    log.Fatal(err)    os.Exit(1)}if resp.StatusCode != http.StatusCreated {    bodyBytes, _ := ioutil.ReadAll(resp.Body)    body := string(bodyBytes)    resp.Body.Close()    return nil, fmt.Errorf("create issue failed:%s", resp.Status + "\ntext: " + body)}var result IssueDetailsResultif err := json.NewDecoder(resp.Body).Decode(&result); err != nil {    resp.Body.Close()    return nil, err}resp.Body.Close()return &result, nil}期望来自 GitHubAPI 的 201。
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

响应是请求被发送到错误端点的强烈指示。

您可以使用net/http/httputil的DumpRequestOut检查您将要发送的请求并确保它们符合您的预期。


查看完整回答
反对 回复 2023-05-22
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

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