我使用Freya web stack构建REST API,但无法为路由定义 URI模板。
我已经定义了一个 Uri Template ,如下所示:
"/{store}/{partition}{?date}"
现在 Freya 路由器将此 Uri模板与以下网址匹配:
http://localhost/a/1?date=2015
http://localhost/b/3?date=2013
但是,如果我省略查询字符串,那么 Uri Template 将不再与该网址匹配。例如,以下网址与模板不匹配:
http://localhost/a/1
http://localhost/b/3
如何使用带有可选查询字符串参数的 Freya 定义 Uri模板?
非常感谢任何帮助,提前谢谢。
答案 0 :(得分:2)
我在 Freya 的源代码中找不到任何建议查询字符串参数可以在 Uri Template 中定义为可选项。
但是,我可以定义两个路由,可以使用指向同一 freyaMachine 的两个单独的 Uri模板进行定义。
我最终选择了两条这样的路线:
let routes =
freyaRouter {
route (Methods [GET]) "/{store}/{partition}" myMachine
route (Methods [GET]) "/{store}/{partition}{?date}" myMachine
} |> FreyaRouter.FreyaPipeline