1

実行時に、私のアプリは、私のアプリが提供する有効な URL である可能性のある文字列を受け取るように提供されます ( に従ってUrlMappings.groovy)、またはそうでない可能性があります。どちらに該当するかを判断したいと思います。

Grails ルーティング ロジックを URL に手動で適用し、それがどのコントローラー/パラメーター (存在する場合) にマップされているかを確認する方法はありますか?

明確にするために、私UrlMappingsがいるとしましょう:

"/path/one" (controller:"api", action:"one")
"/path/two" (controller:"api", action:"two")
"/variable/$segment/1" (controller:"api", action:"var")

これで、アプリは実行時に「/path/fake」という値の文字列を受け取ります。既知のすべてのルートのリストに対して「/path/fake」をテストして、一致しないことを確認できますか? (または、"/variable/segA/1" をテストして、それが API コントローラーの "var" アクションに関連付けられていることを確認できますか?"

注:変数などを含むパスで機能するソリューションを探しています-それらの変数をparams配列に入力します。

4

1 に答える 1

1

コントローラー/サービスなどのアーティファクトに簡単に挿入できるUrlMappingsusingで使用可能なマッピングのリストから、マッピングが存在するかどうかを確認します。grailsApplication

def allMappings = grailsApplication.allClasses
                        .find{it.name == "UrlMappings"}.mappings.urlMappings

assert '/path/one' == allMappings.find{it.toString() == "/path/one"}?.toString()
assert !allMappings.find{it.toString() == "/path/fake"}?.toString()
于 2013-08-28T04:03:23.010 に答える