0

我正在为 Web 框架创建一个 Url 路由器。尽量让用户友好地使用。API 看起来像:

Route[] Routes = {
    new Route(@"/user:(?<id>\d+)", "UserController.View")
};

它将与该正则表达式匹配的任何 Url 路由到该方法的位置,这可能看起来像这样:

public class UserController : Controller
{
    public void View(int id)
    {
        // code here
    }
}

它自动处理类型转换。

该方法采用的参数和参数之间存在相关性(?<id>...)。该View()函数必须接受名称捕获提供的所有参数。但是,它可以接受更多参数,只要它们是可选的。例如,该正则表达式也将匹配 function View(int id, int extraArg=2),因为我们并不真正需要extraArg调用该函数。

问题是,该路由是否也应该与函数匹配View()——没有参数?id捕获很容易被丢弃,我们仍然可以很好地调用该函数。还是应该抛出异常(就像现在一样)?

4

1 回答 1

1

采取最好的编程方法:你不希望用户遇到任何错误。看到用户可能会在任何阶段意外/故意添加额外的参数,我只会采用必要的参数,而忽略其余的。

于 2010-12-31T06:43:28.340 回答