Следует ли проверять встроенные маршруты до или после глобальных маршрутов? - PullRequest
0 голосов
/ 02 января 2011

Я пишу веб-фреймворк, и одна из полезных функций (IMO) заключается в том, что вы можете определить веб-адрес для встроенной функции, например:

[Url(@"/profile:(?<username>\w+)")]
public void Profile(string username)

И тогда эта функция будет автоматически вызываться при посещении /profile:someusername, а someusername будет передано в функцию и автоматически приведено к типу.

Но для тех, кому нравится старый способ работы, вы все равно можете указать все маршруты в одном месте:

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

Теперь я просто пытаюсь решить, в каком порядке следует обрабатывать два разных метода.

OOH, ставя глобальные маршруты на первое место, вы можете обработать все особые случаи заранее, прежде чем встроенные маршруты перехватят их, но OTOH, если вы поставите глобальные маршруты заранее, вы не сможете поместить все запасные маршруты туда. , Поэтому я не могу точно решить, какой порядок лучше ...

Другое решение, которое я предполагаю, состоит в том, чтобы использовать приоритетную очередь, и пользователи могут дать более высокий или более низкий приоритет определенным маршрутам.

1 Ответ

2 голосов
/ 02 января 2011

По моему мнению, более конкретные маршруты должны предшествовать общим маршрутам, просто потому, что они определяют более конкретное поведение.

Мне нравится эта функция, кстати, так как она удаляет определенные маршруты из глобального определения и не загромождает ее, так что у вас гораздо лучший обзор, и вы не указываете их в методах, а на самом деле, где они используются, что помогает читабельности.

...