Урл-роутер API дизайн вопрос - PullRequest
       11

Урл-роутер API дизайн вопрос

0 голосов
/ 31 декабря 2010

Я создаю 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() должна принимать все аргументы, предоставленные захватами имен. Тем не менее, он может принимать больше аргументов, если они являются необязательными. Например, это регулярное выражение также будет соответствовать функции View(int id, int extraArg=2), поскольку нам на самом деле не нужен extraArg для вызова функции.

Вопрос в том, должен ли этот маршрут также соответствовать функции View() - без аргументов? Захват id можно легко отбросить, и мы все равно можем нормально вызывать функцию. Или это должно вызвать исключение (как это происходит сейчас)?

1 Ответ

1 голос
/ 31 декабря 2010

Используйте лучший подход к программированию: вы не хотите, чтобы пользователь сталкивался с какими-либо ошибками. Видя, что пользователь может случайно / намеренно добавить дополнительные параметры на любом этапе, я просто выберу необходимые и проигнорирую остальные.

...