2018年12月28日SHAREツイートシェアはてブLINEPocket準備Expressが提供するアプリケーション生成プログラムツールexpress-generatorというものがあります。方はこちらをさっと読んでみてください。Appを作る時に必要なRoute、Controller、素材、View等や最低限のソースコードを自動生成してくれるすぐれものです。../appコマンド一発で準備されます。実行するとこんな構造ができます。startって実行するだけでもうAppサーバーが立ち上がります。APIを作るにも便利です。AppとAPIの違いはやはりレスポンスですね。普段ウェブサイトにアクセスするとHTMLページデータが返されます。このページデータを読んでCSSや画像を読み込んだりしてますね。APIのレスポンスはXMLとJSON形式が一般的です。(XMLの時代は終わったのでJSON基準で話します)。HTMLの変わりにJSONを返すようにすればAPIサーバーに変わります。ちなみにJSONの送受信だけであれば、/viewsも/publicもいらないので捨てていいです。捨てる場合、app.jsにあるrequire等削除するよう気をつけてください。序章は以上でJoiバリデーションフロントだけではNGはい、入力のバリデーションはブラウザ側だけではダメです。ブラウザのバリデーションはHTML弄れば素通りできるので意味がないです。cURLツールなどを使えばバリデーションがそもそもない状態です。こんな状態でSQLインジェクション文字列を受け取ってサニタイズしないで処理したら危ないですね。いうことで、express-validationとjoiを用いて各種入力の確認を出来るようにしましょう。joiで一気に追加できます。サーバーへデータを渡す方法はparamsbodyqueryheadersがあります。今回はbodyを主に書きたいと思います。バリデーションを以下の通りにしたいと思います。Joi.number().required(),}).required(),};そしてもともとある/route/index.jsのGETを書き換えます。router;通常複数の項目を一気に送信するのでObjectとして囲み、送信します。123}Joiのちょっとした変なところ(?)ですがオブジェクトの配列を送りたい場合もありますね。以下のデータを送ったとします。123}]この場合だとexpress-validation/Joiが以下のようなエラーを吐き出します。objectにご注目ください。JoiはデフォルトでObjectを想定しているので却下されます。Joi.number().required(),})).required(),};を追加すれば、問題なく送信できます。https://github.com/AndrewKeig/express-validation/issues/36GitHubにQ&Aで答えがあったんですが、どこにどう入れればいいのかが本当に分かりにくかったので誰かがこれを見て解決できたらと思います。