「信頼できる表示」RestAPI POST要求時ContentTypeエラー


質問する


postmanでAPIテストを行い、POSTリクエストが正しくない場合があります.
<form class="login-form" action="/user/loginPost" method="post">
  <input class="login-text" type="text" name="uid" placeholder="ID" required autocomplete="off"/>
  <input class="login-text" type="password" name="upw" placeholder="PASSWORD" required/>
  <label class="login-checkbox__row">
          <input class="login-checkbox" type="checkbox" name="useCookie"/>
          <span>REMEBER</span>
  </label>
  <button class="login-btn" type="submit"> Login </button>
</form>

これは簡単なログインウィンドウで、POST方式でテストを行うと所望の結果値が戻ると思います.

form-dataをチェックし、値を入力して要求を送信しますが、返される応答はloginErrorのときに発生する応答です.
問題を解決するために、postmancontent-type、Springの関連資料を探すことで、私たちが知らないことを学ぶことができます.
参考にした文章は以下の通りです.

参考資料


📘 https://www.one-tab.com/page/jLshE7LVSjqbQRB62x9s9w

新知

  • コンテンツタイプにおける「アプリケーション/json」と「アプリケーション/x-www-form-urlcoded」の違い
    :contentTypeによってクライアントからサーバに送信されるデータのフォーマットが異なります.
    両者の最大の違いは
    jsonは{[key 1]:[value 1],[key 2]:[value 2]}形式である.
    x-www-form-urlencodedは、[key 1]=[value 1]&[key 2]=[value 2]を使用してkeyとvalueを「=」に組み合わせ、「&」でそれぞれ区切ります.
    これらの違いからcontentTypeを調整することが重要です.
  • HTMLのフォームタグは、基本的にアプリケーション/x-www-form-urlcodedとしてcontentTypeを使用します.
  • Spring Arnovation @RequestBody@RequestBody MultiValueMap<String, String>@ModelAttributeを用いて、上記の異なるケースを処理することができる.
  • とContentTypeを同時にサポートするには、コントローラ内に2つの方法を作成します.リファレンス
  • @はPOSTでのみ@RequestBody、GETでは@ModelAttributeは使用されません.
    parameterの署名タイプと宣言は状況に応じて使用します.
  • 解決する



    上記のように、formの基本contentTypeに従ってpostmanのbodyフォーマットを変更します.