我正在尝试开发一个 URL 调度程序来根据 URL 执行不同的操作。例如:
- http://localhost:8080/ -> 进入主页
- http://localhost:8080/edit?id=2 -> 进入编辑页面
- http://localhost:8080/delete?id=4 -> 去删除页面
至于现在,我得到了以下有效的代码:
dispatch(uri) =
match uri with
| {path= [edit] query=[("id", parameter)] ...} -> Customer.edit(parameter)
| {path= [delete] query=[("sid", parameter)] ...} -> Customer.delete(parameter)
| {~path ...} -> start()
server = Server.simple_dispatch(dispatch)
然而,在我的第一次尝试中,我有:
| {path= [edit] query=["id", parameter] ...} -> Customer.edit(parameter)
| {path= [delete] query=[("id", parameter)] ...} -> Customer.delete(parameter)
但是编译器会因为两行中都有“id”而引发错误,显然第一行是“覆盖”第二行。我的问题是:
- 如何为两行保持相同的参数名称“id”而不会出错?
- 可以处理多少个不同类型的参数?例如 localhost:8080/edit?id=2&ask=true&showImage=0
- 模式“...”是干什么用的?
提前致谢