向 GitHub API V3 發(fā)布問(wèn)題時(shí),我收到了意外響應(yīng)。即 422 不可處理的實(shí)體。但是,錯(cuò)誤的詳細(xì)信息是針對(duì)搜索端點(diǎn)而不是 POST 創(chuàng)建端點(diǎn)的。{“消息”:“驗(yàn)證失敗”,“錯(cuò)誤”:[{“資源”:“搜索”,“字段”:“q”,“代碼”:“缺失”}],“documentation_url”:“https:/ /developer.github.com/v3/search "}我的直覺(jué)是我弄亂了 json,但它非常簡(jiǎn)單,我看不到問(wèn)題所在。我已經(jīng)嘗試過(guò)在這里和其他地方發(fā)布的各種解決方案,但沒(méi)有發(fā)現(xiàn)我做錯(cuò)了什么。這是一個(gè)編碼練習(xí),而不是任何用于生產(chǎn)的練習(xí),但讓我有點(diǎn)瘋狂。在發(fā)布之前在調(diào)試中測(cè)試請(qǐng)求正文是什么。{"title":"Hello World","body":"dfsdfsdf\n"}嘗試刪除主體,因?yàn)樗强蛇x的,同樣的問(wèn)題。在 Debug 中測(cè)試請(qǐng)求是 POST 類(lèi)型在 Debug 中測(cè)試授權(quán)標(biāo)頭是正確的。刪除授權(quán)密鑰并按預(yù)期收到 401。發(fā)帖功能: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}期望來(lái)自 GitHubAPI 的 201。
1 回答

陪伴而非守候
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
響應(yīng)是請(qǐng)求被發(fā)送到錯(cuò)誤端點(diǎn)的強(qiáng)烈指示。
您可以使用net/http/httputil
的DumpRequestOut檢查您將要發(fā)送的請(qǐng)求并確保它們符合您的預(yù)期。
- 1 回答
- 0 關(guān)注
- 276 瀏覽
添加回答
舉報(bào)
0/150
提交
取消