AxiosでのPost時の内容 type 'application/octet-stream' not サポートされているハンドルリング(415エラー)
だんだん暖かくなってきましたが、今日も私の気持ちは不安定です.
明らかに、POSTMANコールは平和なAPIであり、正常に動作し、問題はありません.
stringは画像とJSON形式で入ります.
しかし、前置きで415の間違いをずっと言っているのではないでしょうか.
私は思わず415の間違いを調べた.
contentTypeを確認すれば大丈夫ですajaxとcontrollerのcontentTypeが一致しない場合に発生します.場合によっては、データが正常に転送されず、エラーが発生する可能性があります.
うん、なるほど.バックエンドコントローラでは、multipart/form-dataに移動していないようです.
だから私は楽屋で彼を見た.
2022-03-25 14:11:21.496 WARN 1 --- [io-8080-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported]
今回も初めて見るContent Typeがありました
8ビットストリームは、その名の通り、8ビットバイナリデータです.
特に表示できるプログラムが存在しないデータについては、octet-streamをデフォルト値として使用します.
≪コンテンツ|Contents|ldap≫:Dispositionヘッダーを添付ファイルにズームして、データを受信するブラウザ設定ファイルを保存するか、保存するかを指定できます.
ただし、octet-streamタイプはすべてのデータに使用することは推奨されません.
出典:https://dololak.tistory.com/130[象を冷蔵庫に入れる方法]
あ、なるほど…!
複数部分フォーム:HTMLのフォームタグにおいて、POSTなどを使用して複数のデータをバンドルして転送する場合、以下のようになります.
私のコードでheaderについて詳しく説明したかもしれませんが、formdataに画像とjsonを追加する過程で、正しく入っていないようです.
formdataフォーマットの値は無条件にstringに変換されます.
blobオブジェクトとテキストフォーマットのデータしか追加できないようです.(ファイルもblobオブジェクトに属する)
したがって、formdataタイプでjsonタイプのデータを送信する場合は、blob関数を使用してラップし、2番目のパラメータtype:[アプリケーション/json]を使用して一緒に入れる必要があります.
楽屋にいます.jsonでdtoを受け取り、reactではJSONです.stringgifyでjavascript objectを生成して送信したため、415エラーが発生しました.
JSON.stringgifyでjavascriptオブジェクトを生成し、blobオブジェクトのタイプをアプリケーション/jsonとして作成し、formdataに添付すればよい.
そうはいかない.💩
明らかに、POSTMANコールは平和なAPIであり、正常に動作し、問題はありません.
stringは画像とJSON形式で入ります.
しかし、前置きで415の間違いをずっと言っているのではないでしょうか.
415エラー
私は思わず415の間違いを調べた.
contentTypeを確認すれば大丈夫ですajaxとcontrollerのcontentTypeが一致しない場合に発生します.場合によっては、データが正常に転送されず、エラーが発生する可能性があります.
うん、なるほど.バックエンドコントローラでは、multipart/form-dataに移動していないようです.
だから私は楽屋で彼を見た.
2022-03-25 14:11:21.496 WARN 1 --- [io-8080-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported]
今回も初めて見るContent Typeがありました
application/octet-stream
8ビットストリームは、その名の通り、8ビットバイナリデータです.
特に表示できるプログラムが存在しないデータについては、octet-streamをデフォルト値として使用します.
≪コンテンツ|Contents|ldap≫:Dispositionヘッダーを添付ファイルにズームして、データを受信するブラウザ設定ファイルを保存するか、保存するかを指定できます.
ただし、octet-streamタイプはすべてのデータに使用することは推奨されません.
出典:https://dololak.tistory.com/130[象を冷蔵庫に入れる方法]
multipart/form-data
あ、なるほど…!
複数部分フォーム:HTMLのフォームタグにおいて、POSTなどを使用して複数のデータをバンドルして転送する場合、以下のようになります.
私のコードでheaderについて詳しく説明したかもしれませんが、formdataに画像とjsonを追加する過程で、正しく入っていないようです.
formdataフォーマットの値は無条件にstringに変換されます.
blobオブジェクトとテキストフォーマットのデータしか追加できないようです.(ファイルもblobオブジェクトに属する)
したがって、formdataタイプでjsonタイプのデータを送信する場合は、blob関数を使用してラップし、2番目のパラメータtype:[アプリケーション/json]を使用して一緒に入れる必要があります.
質問(JSON.stringgify)
楽屋にいます.jsonでdtoを受け取り、reactではJSONです.stringgifyでjavascript objectを生成して送信したため、415エラーが発生しました.
解決策
JSON.stringgifyでjavascriptオブジェクトを生成し、blobオブジェクトのタイプをアプリケーション/jsonとして作成し、formdataに添付すればよい.
そうはいかない.💩
fd.append("dto", JSON.stringify(inputs);
これでいいconst json = JSON.stringify(inputs);
const blob = new Blob([json], { type: "application/json" });
fd.append("dto", blob);
Reference
この問題について(AxiosでのPost時の内容 type 'application/octet-stream' not サポートされているハンドルリング(415エラー)), 我々は、より多くの情報をここで見つけました https://velog.io/@hhhminme/Axios에서-Post-시-Contenttypeapplicationoctet-streamnotsupported-핸들링415-에러テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol