尝试创建问题时 GitHub API 422 的意外错误响应
Unexpected error response from GitHub API 422 when attempting to create issue
向 GitHub API V3 发布问题时,我收到了意外的回复。即 422 不可处理的实体。但是,错误的详细信息是针对搜索端点而不是 POST 创建端点的。
{"message":"Validation Failed","errors":[{"resource":"Search","field":"q","code" :"missing"}],"documentation_url":"https://developer.github.com/v3/search"}
我的直觉是我把 json 搞砸了,但它很简单,我看不出问题所在。
我已经尝试过在这里和其他地方发布的各种解决方案,但没有发现我做错了什么。这是一个编码练习,而不是任何用于生产的练习,但让我有点疯狂。
- 在发布之前在调试中测试了请求正文的内容。
{"title":"Hello World","body":"dfsdfsdf\n"}
- 尝试删除正文,因为它是可选的,同样的问题。
- 在调试中测试请求的类型为 POST
- 在调试中测试授权头是正确的。
- 已删除授权密钥并按预期收到 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 IssueDetailsResult
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
resp.Body.Close()
return nil, err
}
resp.Body.Close()
return &result, nil
}
预计 GitHubAPI.
为 201
响应是请求被发送到错误端点的强烈指示。
您可以使用 net/http/httputil
的 DumpRequestOut 检查您将要发送的请求并确保它们符合您的预期。
向 GitHub API V3 发布问题时,我收到了意外的回复。即 422 不可处理的实体。但是,错误的详细信息是针对搜索端点而不是 POST 创建端点的。 {"message":"Validation Failed","errors":[{"resource":"Search","field":"q","code" :"missing"}],"documentation_url":"https://developer.github.com/v3/search"}
我的直觉是我把 json 搞砸了,但它很简单,我看不出问题所在。 我已经尝试过在这里和其他地方发布的各种解决方案,但没有发现我做错了什么。这是一个编码练习,而不是任何用于生产的练习,但让我有点疯狂。
- 在发布之前在调试中测试了请求正文的内容。 {"title":"Hello World","body":"dfsdfsdf\n"}
- 尝试删除正文,因为它是可选的,同样的问题。
- 在调试中测试请求的类型为 POST
- 在调试中测试授权头是正确的。
- 已删除授权密钥并按预期收到 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 IssueDetailsResult
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
resp.Body.Close()
return nil, err
}
resp.Body.Close()
return &result, nil
}
预计 GitHubAPI.
为 201响应是请求被发送到错误端点的强烈指示。
您可以使用 net/http/httputil
的 DumpRequestOut 检查您将要发送的请求并确保它们符合您的预期。