Наименее ресурсоемкий способ настроить 4 «красивых» URL-адреса?

StackOverflow https://stackoverflow.com/questions/1966398

Вопрос

Я планирую API для собственного использования на Python.Возможно, когда-нибудь я сделаю его доступным для свободного доступа, но пока планирую использовать его только на своем хобби-сайте.На этом этапе мне нужен совет о том, как настроить URL-адреса для файлов, которые получают запросы GET и POST.

Предположим, один из моих файлов называется function_A.py и используется таким образом:

www.example.com/api/function_A.py?a=something&k=other+thing

Мой вопрос: как настроить «красивые» URL-адреса в API наименее ресурсоемким способом?

Я вижу, что большинство API имеют типичный формат URL, например http://www.example.com/api/read вместо http://www.example.com/api/read.py

Мои возможности, вероятно, ограничены mod_rewrite против urls.py используя Django – или есть другой более простой вариант?

Это для серверной части/API, и я бы предпочел свести накладные расходы к минимуму.Я хочу обрабатывать таким образом только 4 URL-адреса и не хочу, чтобы регулярное выражение возникало каждый раз при вызове URL-адреса.

Это было полезно?

Решение

МИН правильно.Использование такой платформы, как Ruby on Rails или Django, — это самый простой способ создать RESTful API.

Однако, если вы не хотите использовать фреймворк, вы можете сделать то же самое, используя mod_rewrite в Apache.Фактически, это именно то, что делает большинство фреймворков/приложений, работающих на Apache.

Например, Wordpress использует файл .htaccess следующим образом:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Это направляет все запросы на index.php, где они могут быть проанализированы и обработаны.

Такие фреймворки, как RoR или Django, делают практически то же самое:все запросы перенаправляются в один файл/класс/функцию.

Другие советы

Я предполагаю, что API веб-сервисов с красивыми URL-адресами (также известными как REST) ​​создаются с помощью какой-то веб-инфраструктуры (Werkzeug, web.py, django, pylons, Cherrypy, Plain WsGI,...).

Модуль, на который вы ссылаетесь, заботится о сопоставлении/обработке URL-адресов, чтобы определить правильный маршрут для запроса.

Из документации последнего:

Routes решает интересную проблему, которая часто возникает в веб-разработке: как сопоставить URL-адреса с действиями вашего приложения?То есть, как вы говорите, что к этому следует обращаться как /blog/2008/01/08, и /login должен это сделать?Многие веб-фреймворки имеют фиксированную систему диспетчеризации;например., /A/B/C значит прочитать файл C в каталоге B, или вызвать метод C класса B в модуле A.B.Они работают нормально, пока вам не понадобится провести рефакторинг кода и не осознать, что перемещение метода меняет его общедоступный URL-адрес и делает недействительными закладки пользователей.Аналогично, если вы хотите реорганизовать свои URL-адреса и превратить раздел в подраздел, вам придется изменить тщательно проверенный логический код.

Да, .htaccess — это способ сопоставить красивый внешний URL-адрес на сервере Apache с каким-то грязным URL-адресом, который принимает ваша сервисная платформа.

Некоторые сложные платформы также имеют средства для создания более красивых URL-адресов.

Никакого волшебства.Вы случайно используете веб-сервер, который был разработан с учетом файловых URL-адресов.

Большинство сайтов больше не беспокоятся о файловых URL-адресах и вместо этого выполняют собственную отправку.Это то, что делает Django, это то, что делает ASP.NET MVC.

Что вам нужно найти, это mod_rewrite для Апача.Это позволит вам сопоставлять URL-адреса, не основанные на файлах, с вашими файлами Python.

В качестве альтернативы рассмотрите возможность использования веб-фреймворка Python, который уже делает это. Веб.py и Джанго милые.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top