Lambdaを使って、ブラウザ側とサーバー側で同じバリデーションをするということをやった。ンンンパスマートフォン用の表示で見るンンンパふとしです移転しましたこの広告は、90日以上更新していないブログに表示しています。Lambdaを使って、ブラウザ側とサーバー側で同じバリデーションをするということをやった。Lambda日記です。今日の日記コードはこれ。Lambdaでフォームなんていう記事は山盛りあったのでこっちで。日記Node.jsはサーバーとして動かせるので、ブラウザ側とサーバー側で同じスクリプトを用いることが可能です。(アイソモーフィック?)しかし動かすとなるとサーバーを用意して〜、など色々と難関がありました。Lambdaであることはみなさんご存知のとおりですね。バリデーションの準備まずバリデーターライブラリを用意します。これにはvalidatorを使いました。github.comこれをラップしたRecordというクラスをつくり、以下のようなコンフィグ(config.jsに入っています)をあたえ、validateメソッドで確認できるようにしました。}};ブラウザ側バリデーションあとはこのバリデーターを、ブラウザ側で使えるようにします。ライブラリやコンフィグファイルが別ファイルになっているので、毎度おなじみのbrowserifyで連結します。}};あとはこのバリデーションをサーバーに送信する前に行い、validであれば送信します。サーバー側バリデーション送信されてくるデータは全く安全でないのは常識ですから、サーバー側でもバリデーションする必要があります。LambdaではNode.jsが動いていますから、browserifyは必要ありません。今回はバリデーションの成否で終了していますが、そこらへんにdynamoDBやメール送信の処理を書けばいいんじゃないでしょうか。Gateway側でfailureをキャッチして、同じ形にします。.*"result":"failure".*で失敗ステータスコードに振り、本文マッピングテンプレートでエラー部を取り出したものをレスポンスとします。送信せずとも同じバリデーションが行えるわけですから、送信前にバリデーションし、invalidであればdeployErrorsというメソッドが、各項目のinputの上や下にエラーを表示します。何らかの都合でinvalidなデータが送信されても、サーバー側でinvalid判定されて、同じエラーが返ってきてdeployErrorsというメソッドが、各項目のinputの上や下にエラーを表示します。}わりと長年の夢であった、サーバーとクライアントで同じコードでバリデーションするというのが、比較的簡単にできてしまいました。課金の心配が結構軽い。フォーム作成というこまごまとした仕事は、前職前前職ともによくあって、cgiの、メンテされてるんだがされてないんだかわからないスクリプトを使用していました。Rails大好きなわたしもさすがに一個の問い合わせフォームにRailsというわけにもいかなくて難儀していましたが、これならヤバイ脆弱性も自分の責任のうちで作成できるのでいいかもしれませんね。Lambdaを使って、ブラウザ側とサーバー側で同じバリデーションをするということをやった。Lambdaで使う関数をローカルでテストするサーバーを建てる。DynamoDBでなにかをつくる...2015-10-11今朝のメールフォームをHerokuで動くように変更した。データベー...2015-10-11CGIとしてRubyでメールフォームした。歳定年からのプログラマー。(1)検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!mmmpaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。