Лучший способ перенести API из CodeIgniter в Django - PullRequest
1 голос
/ 30 ноября 2010

Вначале мы сделали проект с использованием CodeIgniter, и у нас было несколько контроллеров, которые использовались для подключения внешнего NAS к базе данных через его веб-интерфейс, для краткого рассказа у нас была куча URL, для которой требовался ключ APIиметь доступ, чтобы избежать общих хакерских атак из внешних источников, вызывающих API.

API существовал для различных задач, которые должен был выполнять NAS (управление заказами, загрузка данных / изображений и т. д.), поэтому у нас было несколько различных контроллеров(т. е. один для заказов, изображений и т. д.) Папка API выглядела примерно так:

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

Что-то вроде этого:

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));
}
}

ГдеApiController только что проверил APIKey по отношению к магазину, к которому он пытался получить доступ.

Теперь мы переносим проект в Django, и я просто хотел узнать, как снова настроить этот API.Я думал о создании приложения API для проекта и импорте моделей в views.py и создании некоторых функций для всего, моя проблема здесь в том, чтобы найти способ красиво все разбить (на отдельные файлы для каждой из разных вещей).)?Или я должен просто набрать views.py всего и беспокоиться об этом в URL.

Или есть лучший способ?Если возможно, я бы хотел разделить api на версии вроде (api / v1, api / v2 и т. Д.), Чтобы мы могли просто перенаправлять URL-адреса на новый api, не затрагивая старый.Это может пригодиться, если у нас разные NAS используют разные версии API (сложно объяснить почему ...)

1 Ответ

2 голосов
/ 30 ноября 2010

Вы можете попробовать что-то вроде Django Piston или Django-tastypie , чтобы быстро заставить что-то работать. Преимущество big по сравнению с использованием обычных представлений Django заключается в том, что вы получаете большую часть CRUD и сериализации в JSON / Yaml / XML за вас.

Tastypie поставляется со встроенным механизмом аутентификации с общим секретным ключом , и не составляет труда найти эквивалентный код для Piston.

РЕДАКТИРОВАТЬ: Кстати, я недавно работал с Piston и Tastypie. Я считаю, что Tastypie проще в настройке, а база кода выглядит чище. Тем не менее, ему не хватает некоторых функций (начиная с версии 1.0), что делает невозможным его использование в данный момент. Piston очень легко внедрить во все, что вам нужно, но код, похоже, становится застойным, автор, похоже, не очень отзывчив на открытые проблемы, и вы, вероятно, в конечном итоге получите свой собственный форк с исправлениями ошибок, которые вам нужны для Ваше приложение должно работать правильно. Не идеальная ситуация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...