2

redmine rest api を使用して wiki ページを作成しようとしています。認証は成功しましたが、422 エラーのため wiki ページが作成されていません。

Redmine のドキュメントには次のように書かれています。

しかし、私はどこを台無しにしているかを見つけることができるようです。2番目のリクエスト「PUT REQUEST」を実行したときに問題が発生しました。

そのため、問題はそのセクションのどこかにあることがわかります。

私の推測では、それはファイル パスまたはコンテンツ タイプのいずれかです。

これは私がこれまでに持っているものです....

const wordDocument="C:\Users\adasani\Desktop\practice\RedmineApi/RedmineText.txt";

creatingWikiPage_Request(wordDocument);

function creatingWikiPage_Request(wordDocument) {

    axios({
        method: 'post',
        url: '<redmine_url>/uploads.json',
        headers: { 'Content-Type': 'application/octet-stream' },
        params: { 'key': '<api-key>' },
        data: wordDocument
    })
        .then(function (response) {
            console.log("succeeed--->  ");
            console.log(response.data.upload.token)
            axios({
                method: 'put',
                url: '<redmine_url>/projects/Testing/wiki/WikiTesting.json',
                headers: { 'Content-Type': 'application/octet-stream' },
                params: { 'key': '<api-key>' },
                data: {

                    "wiki_page": {
                        "text": "This is a wiki page with images, and other files.",
                        "uploads":[ 
                            { "token": response.data.upload.token, "filename": "RedmineText.txt", "content-type": "text/plain" }
                        ]
                    }

                }

            })
                .then(response => {
                    console.log("PUT is Succeed-->>>")
                    console.log(response)
                })
                .catch(error => {
                    console.log("Error-->>")
                    console.log(error.response)
                })

        })
        .catch(function (error) {
            console.log("failed----->  ");
            console.log(error.response.statusText, "-->", error.response.status);
            console.log(error.response.headers)
            console.log(error.message)
            console.log("failed----->  ");
        })

}


Redmine ダッシュボードに Wiki ページが作成されているはずですが、422 エラーが発生します。

4

2 に答える 2

7

更新リクエストを JSON API に送信してい<redmine_url>/projects/Testing/wiki/WikiTesting.jsonますContent-Type: application/octet-stream。このため、Redmine は PUT されたペイロードを解析できません。これは、データがどのような形式であるかがわからないためです。

これを解決するには、データを投稿するときに常に正しいコンテンツ タイプを設定する必要があります。この場合、JSON 形式のデータを Redmine に送信するときにContent-Typeヘッダーをに設定する必要があります。application/json

原則として、XML データを Redmine に送信し、JSON を取得できることに注意してください。.json出力形式は、URL (または) で終わるファイルによって決まります。.xml送信されるデータの形式は、常にContent-Typeヘッダーによって識別されます。

于 2019-06-24T16:32:25.330 に答える