Question

Je prévois une API pour mon propre usage, en Python.Peut-être qu'un jour je le rendrai librement accessible, mais maintenant je prévois de l'utiliser uniquement sur mon site de loisirs.À ce stade, j'ai besoin de conseils sur la façon de configurer les URL pour les fichiers qui reçoivent à la fois des requêtes GET et POST.

Supposons qu'un de mes fichiers s'appelle function_A.py et utilisé de cette façon :

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

Ma question est la suivante : comment configurer de « jolies » URL dans une API, de la manière la moins gourmande en ressources ?

Je vois que la plupart des API ont un format d'URL typique comme http://www.example.com/api/read au lieu de http://www.example.com/api/read.py

Mes options sont probablement limitées à mod_rewrite contre urls.py en utilisant Django - ou existe-t-il une autre option plus simple ?

Ceci est pour le backend/API et je préfère réduire les frais généraux au minimum.Je souhaite uniquement gérer 4 URL de cette façon et je ne souhaite pas qu'une expression régulière se produise à chaque fois que l'URL est appelée.

Était-ce utile?

La solution

Le MYYN est correct. L'utilisation d'un cadre tel que Ruby on Rails ou Django est la meilleure façon de créer une API RESTful.

Cependant, si vous ne voulez pas utiliser un cadre, vous pouvez faire la même chose en utilisant mod_rewrite dans Apache. En fait, c'est précisément ce que la plupart des cadres / applications en cours d'exécution sur Apache font.

Par exemple, Wordpress utilise un fichier .htaccess comme ceci:

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

dirige toutes les demandes de index.php, où ils peuvent être analysés et traités.

Cadres comme RoR ou Django faire pratiquement la même chose. Toutes les demandes sont redirigés vers un seul fichier / classe / fonction

Autres conseils

Je suppose que les API de services Web avec de jolies URL (alias REST) ​​sont construites via une sorte de framework Web (Werkzeug, web.py, django, pylônes, Cherrypy, Plain wsgi, ...).

Le module auquel vous faites référence s'occupe de la correspondance/gestion des URL afin de déterminer l'itinéraire correct pour une demande.

Extrait de la documentation de ce dernier :

Routes aborde un problème intéressant qui revient fréquemment dans le développement Web : comment mapper les URL aux actions de votre application ?Autrement dit, comment dites-vous que cela devrait être accessible comme /blog/2008/01/08, et /login tu devrais faire ça ?De nombreux frameworks Web disposent d'un système de répartition fixe ;par exemple., /A/B/C signifie lire le fichier C dans l'annuaire B, ou pour appeler la méthode C de classe B dans le module A.B.Ceux-ci fonctionnent correctement jusqu'à ce que vous deviez refactoriser votre code et réaliser que le déplacement d'une méthode modifie son URL publique et invalide les favoris des utilisateurs.De même, si vous souhaitez réorganiser vos URL et transformer une section en sous-section, vous devez modifier votre code logique soigneusement testé.

Oui, .htaccess est la façon dont vous pouvez mapper d'un joli externe, URL du serveur Apache à une URL crasseux que votre plate-forme de service accepte.

Certaines plates-formes complexes n'ont des moyens de production plus agréables URL aussi bien.

Il n'y a pas de magie. Vous venez donc arrive d'utiliser un serveur Web qui a été conçu avec des URL basées sur des fichiers à l'esprit.

La plupart des sites ne se soucient pas des URL basées sur des fichiers plus et au lieu faire leur propre expédition. Voilà ce que fait Django, voici ce qui fait ASP.NET MVC.

Ce que vous devez rechercher est mod_rewrite pour Apache. Il vous permettra de cartographier les URL basées sur des fichiers non à vos fichiers Python.

Vous pouvez également envisager d'utiliser un framework web Python qui fait déjà. Web.py et

scroll top