12

そのため、GitHub API に慣れようとしています。基本機能の一部を実装するために cURL コマンドを使用しています。基本的な承認とリポジトリの作成を正しく取得できます。現在、API を使用してリポジトリにファイルを作成しようとしていますが、応答として "message":"Not Found" エラーに直面しています。

彼らのドキュメントはこれを示唆しています:

PUT /repos/:owner/:repo/contents/:path

私はこれをcURLに相当するものとして思いつきました:

curl -H 'Authorization: <token>' -d '{"path": "test.txt", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test.txt

最後に使用している API URL に問題があると思いますが、URL がどのように見えるべきかわかりません。

これは、リポジトリの作成に使用したものです。

curl -i -H 'Authorization: <token>' -d '{"name": "test_repo1", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/user/repos

私が使用したリポジトリ作成 URL は次のとおりです。構文は user/repos です。同様に、user/repos/repo を使用してみましたが、うまくいきませんでした。

誰でもこれに光を当てることができますか?

私はさまざまな StackOverflow の質問を経験しましたが、多くは似ているように見えますが、実際に例を提供するものはないため、間違いがどこにあるのかを突き止めることができます。

編集:答えてくれたTimWollaに感謝します。

GitHub API を使用してリポジトリにファイルを作成する作業コマンドの構文:

curl -i -X PUT -H 'Authorization: token <token_string>' -d '{"path": "<filename.extension>", "message": "<Commit Message>", "committer": {"name": "<Name>", "email": "<E-Mail>"}, "content": "<Base64 Encoded>", "branch": "master"}' https://api.github.com/repos/<owner>/<repository>/contents/<filename.extension>

私の例:

curl -i -X PUT -H 'Authorization: token f94ce61613d5613a23770b324521b63d202d5645' -d '{"path": "test4.txt", "message": "Initial Commit", "committer": {"name": "Neil", "email": "neil@abc.com"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "branch": "master"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test4.txt

4

1 に答える 1

7

使用する場合は、次のオプションを使用しcurlて正しい HTTP 動詞 (PUTこの場合) を指定する必要があります。-X

curl -X PUT -H 'Authorization: …' yadayada

また、ペイロードの例を使用すると、エラー 500 が表示され、この短縮されたペイロードは正常に機能しました。

{"message": "Initial Commit","content": "bXkgbmV3IGZpbGUgY29udGVudHM="}

ただし、サーバーエラーの実際の理由はわかりません。

于 2014-03-11T01:36:31.107 に答える