web-dev-qa-db-ja.com

POST REDMINE APIを送信するときに「422未処理のエンティティ」を修正する方法

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

Redmineのドキュメントは、無効または属性パラメータを欠いているオブジェクトを作成または更新しようとすると、422の未処理のエンティティ応答が得られます。それは、オブジェクトが作成または更新できなかったことを意味します。

しかし、私は私がめちゃくちゃになった場所を見つけるように思えることができます。 i DID 2番目のリクエスト - "PUTリクエスト"のときに問題が発生しました。

だから私たちは問題がそのセクションのどこかであることを知っています。

私の推測は、ファイルパスまたはコンテンツタイプのどちらかです。

これが私がこれまでのものです....

_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 Dashboardに登録されているWikiページが作成されているが、422エラーが発生しています。

2
Aaron Dasani

<redmine_url>/projects/Testing/wiki/WikiTesting.jsonのJSON API、すなわちContent-Type: application/octet-streamに更新要求を送信しています。このため、データが何形式の形式ではわからないため、RedMineはPUTEDペイロードを解析できません。

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

プリンシパルでは、XMLデータをREDMINEに送信してJSONを返します。出力フォーマットは、URL(.jsonまたは.xml)で終わるファイルによって決まります。これはContent-Typeヘッダーによって常に識別されます。

0
Holger Just

私のFlutter Appからサーバーに複数のファイルをアップロードしながら、私は同様の問題があります。複数のファイルを受信するための[]フォーマットがあるサーバーがいくつかのサーバーです。

 => Change From
formData.files.add(MapEntry(
    "videos",
    await MultipartFile.fromFile(curPost.url, filename: getFileNameByFullPath(curPost.url)),
  ));


=> TO
formData.files.add(MapEntry(
    "videos[]",
    await MultipartFile.fromFile(curPost.url, filename: getFileNameByFullPath(curPost.url)),
  ));
 _

ここで私はちょうどChange Keyをビデオ to ビデオ[]

0
silwalprabin