確保您的路由處理方法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/?
一直尾隨?
,它將匹配兩個文件http://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"])
}
}