Должно ли мое веб-приложение быть потребителем моего API? - PullRequest
3 голосов
/ 11 июня 2010

Я скоро буду разрабатывать мобильное приложение (iPhone) и веб-приложение (Django).Для мобильного приложения я буду создавать API REST (скорее всего, с использованием Django) для отправки данных с телефона на сервер туда и обратно.

Когда приходит время создавать веб-версию, имеет смыслсоздайте его как любой другой клиент API.Другими словами, и мобильное приложение, и веб-приложение будут получать данные из внешнего API через HTTP.Или веб-приложение должно иметь прямой доступ к базе данных, которую использует API, и просто получать свои данные таким образом?

Ответы [ 4 ]

4 голосов
/ 11 июня 2010

Разбейте его на три «секции».Первый использует Python API для управления базой данных.Второй соединяет ваш REST API с вашим Python API.Третий говорит о сети и использует Python API.

1 голос
/ 12 июня 2010

Я бы сказал, нет, не используйте API для версии HTML.Если вы хорошо спроектируете Django, вы можете получить меньше кода, чем использовать API для HTML-версии.Вы также можете сохранить возможность веб-дизайнера работать с шаблонами Django всякий раз, когда начальник хочет, чтобы написание чего-то изменилось.

Я бы предложил попытаться определить базовое приложение для вашего приложения iPhone для взаимодействия, а затем расширить его во втором приложении для версии HTML.App1 будет иметь все ваши модели (включая бизнес-логику) и views.py для обработки данных на / с iPhone.Затем создайте App2, который использует App1.models, но создает свой собственный views.py.Если вам повезет, вы обнаружите, что можете изменять только шаблон, используемый для визуализации вывода, поэтому вы можете повторно использовать свои представления, передавая шаблон в качестве аргумента.

Например:

Просмотров приложения:

def list(request, template="list.json"):
    list = Model.objects.filter(deleted=False).filter(user=request.user)
    list.reverse()
    ## Lots of other logic to work on the list.
    return render_to_response(template, {list: list,})

Просмотров приложения:

def list(request, template="list.html"):
    return App1.views.list(request, template=template)
1 голос
/ 11 июня 2010

Я бы создал веб-приложение для обслуживания API для мобильного клиента. То есть дать веб-приложению прямой доступ к базе данных. Это упростит доступ к ресурсу XML / JSON RESTful.

0 голосов
/ 11 апреля 2012

Я думаю, что ответ на этот вопрос со временем изменился.Год назад, когда его спросили, это, вероятно, все еще было слишком хлопотно, но теперь я бы определенно сказал «да» - использование вашего API в качестве основы - разумная вещь.Поскольку веб-сайты используют все больше HTML5, а мобильные приложения становятся умнее, действительно имеет смысл читать / писать все ваши «пользовательские интерфейсы» с одного и того же уровня API.Это даст вам гораздо больше гибкости в будущем.

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