向 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檢查您將要發送的請求并確保它們符合您的預期。
- 1 回答
- 0 關注
- 284 瀏覽
添加回答
舉報
0/150
提交
取消