Наименее ресурсоемкий способ настроить 4 "симпатичных" URL?
Я планирую 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-адреса.
4 ответа
MYYN правильно. Использование такой инфраструктуры, как 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 делают практически одно и то же: все запросы перенаправляются в один файл / класс / функцию.
Да, .htaccess - это способ сопоставления симпатичного внешнего URL-адреса в Apache Server с некоторым грязным URL-адресом, который принимает ваша сервисная платформа.
У некоторых сложных платформ также есть средства для создания хороших URL.
Я предполагаю, что API веб-сервисов с красивыми URL-адресами (иначе REST) создаются с помощью некоторой веб-структуры (Werkzeug, web.py, django, pylons, cherrypy, plain wsgi, ...).
Модуль, на который вы ссылаетесь, заботится о сопоставлении / обработке URL, чтобы определить правильный маршрут для запроса.
- Пример маршрутизации wsgi: http://wsgi.org/wsgi/Specifications/routing_args
- пакет Маршруты: http://routes.groovie.org/
Из документации последнего:
Routes решает интересную проблему, которая часто возникает в веб-разработке. Как вы соотносите URL-адреса с действиями вашего приложения? То есть, как вы говорите, что это должно быть доступно как
/blog/2008/01/08
, а также/login
должен сделать это? Многие веб-фреймворки имеют фиксированную систему диспетчеризации; например,/A/B/C
значит читать файлC
в каталогеB
или вызвать методC
классаB
в модулеA.B
, Они работают нормально, пока вам не потребуется рефакторинг кода и осознание того, что перемещение метода изменяет его общедоступный URL-адрес и делает недействительными закладки пользователя. Аналогично, если вы хотите реорганизовать свои URL-адреса и превратить раздел в подраздел, вы должны изменить тщательно проверенный логический код.
Там нет магии. Вы просто используете веб-сервер, который был разработан с учетом файловых URL.
Большинство сайтов больше не беспокоятся о файловых URL-адресах и вместо этого осуществляют свою собственную рассылку. Это то, что делает Django, это то, что делает ASP.NET MVC.
Что вам нужно для поиска, это mod_rewrite для Apache. Это позволит вам сопоставить не файловые URL-адреса с вашими файлами Python.
В качестве альтернативы посмотрите на использование веб-фреймворка Python, который уже делает это. Web.py и Django хороши.