ルート ハンドラ メソッドが引数を取らないdoSomething()
ことを確認してください。たとえば、次のように保存しますExample.fan
。
using afIoc
using afBedSheet
class MyRoutes {
Text abcdMethod() {
return Text.fromPlain("Hello from `abcd/`!")
}
}
class AppModule {
@Contribute { serviceId="Routes" }
static Void contributeRoutes(OrderedConfig conf) {
conf.add(Route(`/abcd/?`, MyRoutes#abcdMethod))
}
}
class Example {
Int main() {
afBedSheet::Main().main([AppModule#.qname, "8080"])
}
}
そしてそれを実行します:
> fan Example.fan -env dev
( -env dev
追加すると、利用可能なすべてのルートが 404 ページに一覧表示されます。)
/abcd/?
末尾に があるため?
、 のファイル URLhttp://localhost:8080/abcd
と のディレクトリ URL の両方に一致しますhttp://localhost:8080/abcd/
。ただし、内の URL には一致しないことに/abcd
注意してください。
内のファイルを一致さ/abcd
せるには、ルート メソッドに Uri パラメータを追加して (パスを取得するため)、ルートを次のように変更します。
/abcd/** only matches direct descendants --> /abcd/wotever
/abcd/*** will match subdirectories too --> /abcd/wot/ever
例えば:
using afIoc
using afBedSheet
class MyRoutes {
Text abcdMethod(Uri? subpath) {
return Text.fromPlain("Hello from `abcd/` - the sub-path is $subpath")
}
}
class AppModule {
@Contribute { serviceId="Routes" }
static Void contributeRoutes(OrderedConfig conf) {
conf.add(Route(`/abcd/***`, MyRoutes#abcdMethod))
}
}
class Example {
Int main() {
afBedSheet::Main().main([AppModule#.qname, "8080"])
}
}