相変わらず、Kituraを研究しているのですが、入力バリデーションを行う際に何かいいライブラリないかなー?と探していたところ、見つけたのがこのSwiftValidatorsです。
使い方
シンプルなライブラリなので使い方は非常に簡単です。
このように、あらかじめ用意されたバリデータメソッドを使って随時検証を行うことができます。
さらに便利に
しかし、シンプルが故に(?)以下のような不満な点もあります。
- このままではSwift Package Managerで扱えない
- グルーピングして、JSONかDictionaryを渡して一気に検証させたい
- 各バリデーションにエラーメッセージを設定し、エラーがある場合それを取得できるようにしたい
これらを解消するためforkして実装してみました。fork版は以下です。
https://github.com/d-abe/SwiftValidators
Swift Package Manager
Swift Package Managerで取り込めるルールに沿った形に構造を変えました。
以下のようなPackage.swiftを作ればswift build --fetchでPackagesに入ります。
グルーピングとエラーメッセージ
新たに、ValidationSetというクラスを作りました。これは名前の通りバリデーションのセットを作ってまとめて処理できるものです。
サブクラスを作って使用することを想定しています。
適当なサンプルですが、こんな感じですね。
だいぶ、コードの見通しよく書けるんじゃないかと思います!
おわりに
サーバサイドSwiftもライブラリを整備していくことで本格的に使えそうな感じですね。
以前紹介した、Fluentも自力でSQLインジェクション対策してさらにクエリの機能を強化してみましたので、そちらもまたいずれご紹介したいと思います。