Google App Engine: URL-пути на основе заголовка для сущностей
Я хотел бы создать URL-адреса для сущностей на основе их названий.
Например, если название объекта "Книга" - "Ромео и Джульетта", я бы хотел, чтобы пути URL были
http://example.com/book/romeo-and-juliet
Кроме того, как бы я обработал этот путь URL, если название книги "Ромео и Джульетта". Наконец, рекомендуется использовать этот подход, или я должен просто создать URL-пути, используя идентификатор объекта, например:
http://example.com/book/4644337115725824
Благодарен за любой совет.
1 ответ
Зависит от того, как вы получаете книгу. Движок приложения использует ndb, и ключ для каждой книги должен быть уникальным. Так что будет разница между "Ромео и Джульетта" и "Ромео и Джульетта".
Также вам нужно будет предоставить способ уникальности для каждого названия и в отношении книг с одинаковым названием (например, разных стран), что будет сложно.
Подход был бы использовать оба. Сгенерированный идентификатор и название как
/12345678/mybook
Согласно вашему комментарию, вы не озадачены несправедливостью, но SEO и URL-дружественных строк. Я рекомендую поиск по этому вопросу, и вы найдете больше, чем вам нужно. Я не эксперт по URL URL firendly, но они громоздки, и им нужно избегать правил и т. Д.
например, "romeo & juliet" нужно будет экранировать из-за пробелов и "&".
Итак, в конечном итоге вы создаете соглашения для вашего приложения. Вот простое правило для вас:
- Заменить '&' на 'и' на заголовках
- Заменить ' ' (пробелы) на подчеркивание '_'
- ...
Таким образом, вы получите "romeo_and_juliet", которое гораздо более дружественно по отношению к URL, чем "romeo & juliet".
Если в большинстве случаев вам нужно избегать строк, используйте:
encoded_param = urllib.urlencode(book_title)
Мне нравится использовать URL, как
/books/[key]/romeo_and_juliet
где [ключ] книга key
либо строка, либо идентификатор.