我了解到我可以通过以下方式使用仆人和 Lucid 定义我的 API:
type ClientAPI =
"users" :> Get '[HTML] (Html ())
:<|> "userdata" :> Get '[HTML] (Html ())
然后,如果我想在我的 HTML 中添加指向其中一个端点的链接,我可以使用 Lucid 提供的“a_”函数,例如
a_ [href_ "users"] "Show users"
这种方法的问题是我需要重复端点的名称两次。“用户”同时出现在 API 定义和 a_ 标记中。结果,如果我在一个地方更改它,另一个立即停止工作。
有没有办法定义一个可以在两个地方都使用的符号?就像是:
data MySites = UserSite | UserDataSite -- potentially more
type ClientAPI' =
UserSite :> Get '[HTML] (Html ())
-- ......
let html =
...
a_ [href_ UserSite] "Show users"
...