Grails - способы создания реплицированного сайта? - PullRequest
0 голосов
/ 20 января 2012

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

somedomain.com/someController/JohnDoe

с указанием контроллера, за исключением того, что заставляет людей вводить более длинное доменное имя, в отличие от чего-то вроде

somedomain.com/JohnDoe

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

Не могли бы вы уточнить, как Grails поддерживает такие требования / потребности (реплицированный сайт), а также некоторые плюсы и минусы каждого из них?

Спасибо, Рэй


Редактировать: Согласно редактированию Томаша ниже, самый простой способ действия не ясен.Если у вас есть идеи по этому вопросу, пожалуйста, поделитесь.

1 Ответ

1 голос
/ 20 января 2012

Это называется UrlMappings в граалях.Вам нужно объявить:

"/$username?" {
    controller = 'someController'
    action = 'user'
}

Он перенаправляет на someController, действие user и необязательную переменную с именем username.

. Это решение имеет один улов.Каждый пройденный вами путь уровня проходит это правило и ведет к someController.Вы не можете перейти на somedomain.com/books, потому что он передает вышеупомянутое правило и следует за вами на someController#user с params['username']='books'.Тогда вы не можете использовать действия по умолчанию.Но если вы решите, что у всех ваших других путей есть хотя бы одна косая черта, например /books/list, тогда вы можете следовать этому решению

Редактировать: я был неправ.Это не работает, как я ожидал.Я думал, что UrlMappings применяются в порядке их определения.Это не правда, как объяснено здесь .Еще хуже - это не задокументировано ( GRAILS-6246 ).Наиболее конкретное объяснение исходит от Питера Ледбрука:

Он использует алгоритм специфичности, поэтому должно применяться самое конкретное совпадение

Вы должны поэкспериментировать.Я предлагаю вам использовать самое безопасное решение и придерживаться решения /user/username.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...