2010-11-30 4 views
1

Au début, nous avons fait un projet en utilisant CodeIgniter et nous avions des contrôleurs qui étaient utilisés pour connecter un NAS externe à la base de données via son interface web, pour couper une longue histoire. un groupe d'URL qui nécessitait une clé API pour avoir accès afin d'éviter le piratage général de sources externes appelant l'API. L'API existait pour diverses tâches que le NAS devait effectuer (gérer les commandes, télécharger des données/images, etc.), nous avions donc plusieurs contrôleurs différents (un pour les commandes, les images, etc.). regardé quelque chose comme ceci:Meilleure façon de déplacer l'API de CodeIgniter à Django

controllers/apiv1/ 
    orders.php 
    images.php 
    ... 

quelque chose le long des lignes de celle-ci:

class Orders extends ApiController { 

function Orders() 
{ 
    parent::ApiController();  
} 

function get_paid() 
{ 
    $shop = self::get_shop(); 

    $this->load->model('order'); 
    echo json_encode($this->order->by_status($shop->shop_id, Order::STATUS_PAID)); 
} 
} 

Lorsque la ApiController vient vérifier la apikey contre la boutique qu'il essayait d'accès.

Maintenant, nous passons le projet à Django, et je me demandais juste comment l'installer à nouveau. Je pensais à faire une application API pour le projet et importer les modèles dans le views.py et faire des fonctions pour tout, mon problème ici est-il un moyen de tout casser bien (dans des fichiers séparés pour chacune des différentes choses)? Ou devrais-je juste avoir le views.py plein de tout et m'inquiéter à ce sujet dans les urls.

Ou y a-t-il un meilleur moyen? Si possible, je voudrais séparer l'API en versions comme (api/v1, api/v2, etc.) afin que nous puissions simplement router les URL vers la nouvelle API sans affecter l'ancienne. Cela peut être utile si nous avons différents NAS utilisant des versions différentes de l'API (difficile à expliquer pourquoi ...)

Répondre

2

Vous pouvez essayer quelque chose comme Django Piston ou Django-tastypie pour que quelque chose fonctionne rapidement. L'avantage de big par rapport à l'utilisation de vues Django normales est que vous obtenez la plupart des CRUD et la sérialisation de JSON/Yaml/XML pour vous. Tastypie est livré avec un mécanisme intégré shared-secret key authentication, et il n'est pas difficile de trouver le code équivalent pour le piston.

EDIT: BTW, j'ai travaillé avec Piston et Tastypie récemment. Je trouve que Tastypie est plus facile à configurer et la base de code semble plus propre. Cela dit, il manque quelques fonctionnalités (à venir sur la version 1.0) qui me rendent impossible de l'utiliser pour le moment. Piston est très facile à intégrer dans tout ce dont vous avez besoin, mais le code semble stagner, l'auteur ne semble pas très réactif sur les problèmes ouverts et vous aurez probablement votre propre fourchette avec les corrections de bugs dont vous avez besoin pour votre application pour fonctionner correctement. Pas une situation idéale.

+0

Merci pour cela, va regarder dans –

+0

Vous êtes les bienvenus. J'espère juste que vous pouvez voir mon édition avant de décider d'aller pour l'un ou l'autre :) – dguaraglia

+0

Cheers, se penchera sur les deux correctement avant de choisir. J'aime le look de tastypie, et pour ce que nous faisons, il semble plus que suffisant –

Questions connexes