Наименее ресурсоемкий способ настроить 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, чтобы определить правильный маршрут для запроса.

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

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 хороши.

Другие вопросы по тегам