タイトルの通りのものをやってみたので解説を書きます。
前提として、とても内部実装に依存した話なので、すぐ動かなくなる可能性があります、ご注意ください(play2.4.6の情報)
解説はいいから、コード見せろ、という人はこちらご覧ください
さて、リフレクションの説明に入る前に、そもそもplay2.4には、routesのurl一覧取得メソッドがあります。
router.Routes.documentation
で
Seq[(String, String, String)]
な
(httpメソッド、url、Scala上の実装のclass名 + メソッド名)
のTuple3のSeqが返ってきます。
これで十分なら、普通の人はこれ使いましょう。
それで
「router.Routes.documentationメソッド便利だけど、なんか一言ずつ説明のコメントを付け足したい」
↓
「swaggerはなんだかいっぱい書かないといけないし、httpメソッド名などを重複して書かないといけない(?)し、もう少し手軽にやりたい」
↓
「routesのコメントでかけたら便利そう。あれって内部的に保存されてるのかな?」
↓
「リフレクションで無理やり頑張れば取得できたので、blog書いてる(イマココ」
という流れです。最初に書きましたが、もちろんリフレクションなので、version上がったらすぐ動かなくなる可能性があるので、そこのリスクは承知のうえで使いましょう。
playframeworkのroutesは # でコメントを書けるわけですが、それぞれのURLのマッピングの行毎に保存されてるようです。
複数行でも保存されてます。
取得したら、jsonで返すなり、htmlで返すなり、適当に整形するなりして好きに使いましょう