web-dev-qa-db-ja.com

フロントエンドとバックエンドのAPIでフォーム検証コードを共有していますか?

レガシーJavaモノリシックWebアプリケーションがあります。私の目標は、フロントエンドでReactを使用し、バックエンドでJavaを維持し、フロントエンドが使用するAPIを追加することです。

私の質問は、フォーム検証用のフロントエンドとデータ検証用のバックエンドの両方でそれを使用して、データ検証を1回だけ書くにはどうすればよいですか?

Javaで記述されたAPIとjavascriptで記述されたデータ検証により、検証されたリクエストをJavaに渡すjavascript + nodejsで記述された中間検証プロキシAPIを持つ実用的なソリューションです。 API?

React(js検証)-> nodejs-API(js検証)-> Java-API(データ検証なし)

2
Dan

2つのポイント:

  1. UIの検証は、ユーザーからの不正な修正を目的としています。
    • 人間が読める説明
    • UIアラートインジケーター
    • 動的チェック
  2. バックエンドでの検証は、厄介なセキュリティ問題を防ぐように設計されています。
    • 合格/不合格
    • すぐに失敗する
    • シングルパス

どちらもドキュメントを「検証」しますが、

  • 彼らの意図はまったく異なります。オンラインとオフライン、完全か失敗か、高速か、詳細か成功か失敗かです。
  • 利用可能なリソースは異なります:ギガバイトとメガバイト、複数のスレッドと1つのスレッド
  • そして、コードに作用する力は異なります:ブラウザーアーキテクチャとサーバーアーキテクチャ、フレームワーク、言語など...

これを機能させるには、先ほど指摘したように、次のことを行う必要があります。

  • ネットワークアーキテクチャを再編成し、
  • 新しいプラットフォームを採用し、
  • 検証ライブラリーがブラウザーとサーバーの両方の使用に対してポリフィル可能であることを確認してください。

これは、わずか2000行のコードの重複を排除するための高額な費用です。

1
Kain0_0