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」があるため、コンパイラはエラーをスローします。明らかに、最初の行が2番目の行を「オーバーライド」しています。私の質問は次のとおりです。
- エラーなしで両方の行に同じパラメータ名「id」を保持する方法は?
- 異なるタイプの複数のパラメーターをどのように処理できますか? たとえば、localhost:8080/edit?id=2&ask=true&showImage=0
- パターン「...」は何のためですか?
前もって感謝します