Freya - 如何使用可选的查询字符串参数定义Uri模板

时间:2016-02-14 18:32:07

标签: f# freya

我使用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模板

非常感谢任何帮助,提前谢谢。

1 个答案:

答案 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