一部のフィールドへの入力を受け入れ、それらをJSONドキュメントとして形式化してから、処理のためにバックエンドに送信するモバイルアプリがあります。
バックエンドとフロントエンドの両方で間接的に検証および参照できるこのドキュメントのスキーマについて合意したいと思います。
動機の1つは、言語によって入力が変わる可能性があることです。そのため、異なる言語では、構造は同じですが、JSONエントリの値が異なり、両端でハードコーディングすることはできません(特にバックエンド)。
私は主に、そのようなスキーマをどのように表現できるか、そしてそれをバックエンドでどのように検証できるかに関心があります。インターフェースを定義しましょうか?もしそうなら、これを簡単に達成する標準化されたものはすでにありますか?
対象となるバックエンド言語はPythonです。この機能を果たす限り、どのパッケージでも問題ありません。
json schema を使用して、送信するオブジェクトを検証します。
Pythonのスキーマに機能の依存関係がある場合、ライブラリを使用すると、関数を使用してサブエントリを検証できます。例:jsonschemaを使用すると、両方の属性が数値であることを検証できます。 Pythonを使用すると、1つの数値が他の数値より大きいことをさらに検証できます。
アーキテクチャに関する注意:スキーマは相互に参照できます。それらを a folder に入れ、属性の追加、削除、標準化の方法に関するドキュメントを含めます。各コミットは new Python package を作成しますが、JavaScript、Java、...パッケージを生成することもできます。
このアプローチの好きなところ:
[〜#〜] yaml [〜#〜] 、 [〜#〜] raml [〜#〜] または-をご覧になることをお勧めします OpenAPI 。または、さらに多くの読み物が必要な場合は、対応する wikipediaの概要リスト を参照してください。
(もちろん、JSONはRESTと同じではないことを知っています。ここでは、RESTインターフェースを設計する人がJSONをより一般的に好むという印象に基づいて、どのようなインターフェースが記述されるかを推測しています)