最近Vert.xでサーバサイドの開発を行う方法を考えています。
その中で、VirtualHostHandlerというものがあり、ホスト名を指定して分岐する機能があるのですが、ホスト名ごとにRouterクラスを作る方法に少し手間取ったのでメモ。
なお、今回はKotlinで試していますのでJavaの人は脳内で書き換えてください。
MainVerticle
メインのVerticleは単にホスト振り分け用のメインルータクラスをセットしてHTTPサーバをリッスンするだけです。
メインルータ
VirtualHostHandlerを使って振り分けます。
VirtualHost別にダイレクトにsub routerのマウントとかができなかったので、こんな感じでhandlerの中で Router を作ってaccept()を行っています。
各ホストごとのルータ
各ホストごとについては通常通りルータクラスを作ればOKだと思います。
上の例ではAPIに使うルータの例で、CORSを有効にしています。
今回のポイント
Handlerの中で別のルータをどうやって使うか、というところで悩みました。
認証のやり方とかも今後まとめる予定。