jQueryによるajax通信時、Nest.jsサーバ側の型バリデーションで詰まったので備忘録
2556 ワード
概要
フロント側からjQuery.ajaxでNestJsサーバーの方へリクエストを送った際に、
型が全てstringになってしまいバリデーションが機能しないことがあったのでその解決策。
解決策
jQuery.ajax側で、以下の2点を明示して渡す。
・contentTypeを"application/json"に設定
・bodyをJSON.stringifyで括る
sample.js
$.ajax({
type : "Get",
url : "https://unko.com",
contentType : "application/json",
timeout : 1000,
data : JSON.stringify(obj)
}).done()
)}
原因
jQuery.ajaxはデフォルトで 1 "application/x-www-form-urlencoded"で送られるため。(クエリ形式)
注意点として、JSON.stringify()をしたからといって、Nest側で明示的にparseする必要はなく、例えば以下のような設定によって受け取り時にパースされる。
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
処理としてはここらへんになるが、この時"application/jsonを明示しないと、狂ったオブジェクトとして返ってくるので注意。(ここでハマった。)
Author And Source
この問題について(jQueryによるajax通信時、Nest.jsサーバ側の型バリデーションで詰まったので備忘録), 我々は、より多くの情報をここで見つけました https://qiita.com/horiponzu/items/b5648a76ea4a9658f4d7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .