Действительно ли выполнимо создать клиент REST с Flex?

редактировать : краткость и уточнение ответа

Быстрый ответ:

В вашем случае строка urlpatterns += url(r'', include('wiki.urls')) добавляет URL-путь для Django, чтобы оценить для какого-то приложения «вики». Исходный код для файла urls.py, если кто-то еще смотрит на этот вопрос, это здесь .

Длинный ответ:

В wiki.urls.py

# line 51
def get_urls(self):
   ... # gets the root urls & adds all other url patterns
   return urlpatterns

# line 249
def get_pattern(app_name="wiki", namespace="wiki", url_config_class=None):
... # warnings etc...
if url_config_class is None:
    url_config_classname = getattr(settings, 'URL_CONFIG_CLASS', None)
    if url_config_classname is None:
        url_config_class = WikiURLPatterns
    else:
        ... # more warning etc...
        url_config_class = import_string(url_config_classname)
urlpatterns = url_config_class().get_urls()

return urlpatterns, app_name, namespace

и в wiki.conf.settings мы находим

]

# line 273
#: Dotted name of the class used to construct urlpatterns for the wiki.
#: Default is wiki.urls.WikiURLPatterns. To customize urls or view handlers,
#: you can derive from this.
URL_CONFIG_CLASS = getattr(
    django_settings,
    'WIKI_URL_CONFIG_CLASS',
    None)

Итак, вы действительно нашли правильный файл (src.wiki.urls.py). Из приведенных выше сегментов видно, что conf.settings по умолчанию определяет URL_CONFIG_CLASS как None. Затем if None url conf определяет класс как WikiURLPatterns (строка 249) и включает в себя URL-адреса, определенные в get_urls (строка 51). Здесь, в get_urls (и предыдущих строках), вы захотите добавить свой собственный код в другие шаблоны URL, представления и приложения.

Однако, эти настройки становятся устаревшими, см. здесь в документации. Итак, копаясь в Git для проекта, вы можете увидеть, что они переопределили это для современного Django. Итак, в wiki.sites.py смотрите строку 75 и далее, чтобы узнать, как создаются экземпляры URL.

Вы также спросили, где была регистрация? Проверьте строку 94 в wiki.sites.py

32
задан John Topley 30 September 2008 в 15:00
поделиться

14 ответов

Проблема здесь состоит в том, что много веб-дискуссий по поводу этой проблемы является годом или более старый. Я работаю посредством этого того же исследования прямо сейчас, и это - то, что я изучил сегодня.

статья This IBM Developer Works с августа 2008 Jorge Rasillo и Mike Burr показывает, как сделать фронтенд Flex / УСПОКОИТЕЛЬНОЕ приложение бэкенда (примеры в PHP и Groovy). Хорошая статья. Так или иначе вот устранение:

  • Их код PHP/Groovy использование и ожидает ПОМЕЩЕННЫЙ, и УДАЛИТЬ.
  • , Но код Flex должен использовать POST, но устанавливает HTTP-заголовок X-Method-Override для УДАЛЕНИЯ (можно сделать то же для ПОМЕЩЕННОГО, который я предполагаю).
  • Примечание, что это не метод Прокси, обсужденный выше.

// Flex doesn't know how to generate an HTTP DELETE.
// Fortunately, sMash/Zero will interpret an HTTP POST with
// an X-Method-Override: DELETE header as a DELETE.
deleteTodoHS.headers['X-Method-Override'] = 'DELETE';

, Что происходит здесь? веб-сервер IBM прерывает и интерпретирует "POST с, УДАЛЯЮТ" как УДАЛЕНИЕ.

Так, я вырыл далее и нашел этот сообщение и обсуждение с Don Box (один из исходных парней SOAP). По-видимому, это - довольно стандартное поведение начиная с некоторых браузеров, и т.д. не поддерживайте ПОМЕЩЕННЫЙ и УДАЛЯЙТЕ, и обходное решение, которое было вокруг некоторое время. Вот отрывок, но существует намного больше обсуждения.

, "Если бы я создавал клиент GData, я честно задаюсь вопросом, почему я потрудился бы использовать, УДАЛЯЮТ и ПОМЕЩАЮТ методы вообще, учитывая, что X-HTTP-Method-Override собирается работать в большем количестве случаев/развертывания".

Мой устранять из этого то, что, если Ваша веб-сторона поддерживает этот заголовок X-Method-Override, то можно использовать этот подход. Комментарии Don Box заставляют меня думать, что это довольно хорошо поддерживается, но я еще не подтвердил это.

Другая проблема возникает вокруг способности прочитать заголовки ответа HTTP. Снова, от сообщение в блоге в 2007 Nathan de Vries , мы видим обсужденный. Он развил то сообщение в блоге и обсуждение с его собственным комментарием:

"Единственное изменение на веб-передней стороне - то, что более новые версии Flash player (конечно, предоставленные бетой Flex 3) теперь поддерживают responseHeaders свойство на экземплярах HTTPStatusEvent".

я надеюсь, что означает, что это - надуманный вопрос теперь.

23
ответ дан 27 November 2019 в 21:01
поделиться

Путем я справился, это в прошлом должно использовать прокси PHP, который имеет дело с удаленными вызовами веб-сервиса и возвращает RTU JSON клиенту..

0
ответ дан 27 November 2019 в 21:01
поделиться

REST является большим количеством идеологии, чем что-нибудь. Вы переходите к остальным презентации, и у них есть coolaide фармацевты.

Для приложений Flex, прокручивая стек в соединении к BlazeDS и маршалинге данных AMF более удобно и более производителен.

0
ответ дан 27 November 2019 в 21:01
поделиться

На самом деле были, уже используют Flex с Платформой Стиля Отдыха. Как mbrevort уже упомянул PUT, и УДАЛИТЕ методы, не может непосредственно использоваться. Вместо этого мы делаем ПОМЕЩЕННЫЙ через POST, и для УДАЛЯЮТ, мы используем Получение на ресурсе с параметром URL как? action=delete.

Это не 100%-й стиль Отдыха, таким образом, я не уверен, если это работает с реализацией JSR 311. Вы будете нуждаться в некотором flexbility на стороне сервера к обходному решению ПОМЕЩЕННЫЙ и УДАЛЯТЬ ограничения.

Относительно обработки ошибок, мы реализовали ошибочный сервис. В случае серверной ошибки приложение Flex может запросить этот ошибочный сервис для получения фактического сообщения об ошибке. Это также намного более гибко, чем просто отображение кодов возврата HTTP к статическим сообщениям.

Однако благодаря сценариям ECMA Flex, работающего с XML, базировался, сервисы REST очень легко.

0
ответ дан 27 November 2019 в 21:01
поделиться

Да, я смог использовать POST и заголовки доступа с этим компонентом:

http://code.google.com/p/as3httpclient/wiki/Links

Пример

1
ответ дан 27 November 2019 в 21:01
поделиться

Я работал над заменой с открытым исходным кодом для Компонента HTTPService, который полностью поддерживает REST. Если заинтересовано, можно найти бета-версию (исходный код, и/или скомпилированный Flex совместно использовал библиотеку времени выполнения), и инструкции здесь:

http://code.google.com/p/resthttpservice/

3
ответ дан 27 November 2019 в 21:01
поделиться

Существуют определенные недостатки способности Flex действовать как чистый УСПОКОИТЕЛЬНЫЙ клиент.

комментарии ниже от этого блог :

проблемой является класс HTTPService, имеет несколько основных ограничений:

  1. Только ДОБИРАЮТСЯ, и методы POST поддерживаются из поля (если Вы не используете FDS и устанавливаете атрибут useProxy на истинный)
  2. Не способный установить заголовки запроса и нет никакого доступа к заголовкам ответа. Поэтому я не могу получить доступ к органу по ответу в случае ошибки.
  3. Это HTTPService получает код состояния что-либо другие 200, это рассматривает ошибку. (событие 201, ай!!). FaultEvent doesn’t предоставляет информацию о коде состояния любой орган по ответу. Клиент Flex будет понятия не иметь, что пошло не так, как надо.

Matt Raible также дал , хорошая презентация Лежит на направляющих, Grails, GWT и Flex, которые имеют некоторые хорошие ссылки, связанные от него.

, Выполнимо ли это или не действительно зависит от сколько Вашего согласного для работы вокруг путем проксирования, и т.д.

5
ответ дан 27 November 2019 в 21:01
поделиться

Как многие указали HTTPService, немного упрощенно и не делает всего, что Вы хотите сделать. Однако HTTPService просто сахар сверху эти flash.net.* классы как URLLoader, URLRequest и URLRequestHeader. Используя их можно собрать большинство Запросов HTTP.

Когда дело доходит до поддержки других методов, чем ДОБИРАЮТСЯ и POST, проблема главным образом заключается в этом, некоторые браузеры (например, Safari) не поддерживают их, и Flash player полагается на браузер для всего, что это объединяет в сеть.

6
ответ дан 27 November 2019 в 21:01
поделиться

Я работаю правильно теперь на приложении, которое полагается в большой степени на вызовы REST между Flex и Сервлетами Java и JavaScript. Мы обходим проблему кода ошибки ответа путем установления конвенции < идентификатор состояния = "XXX" имя = "YYYYYY" > блок, который возвращается на ошибку с ошибочными идентификаторами, которые примерно отображаются на коды Ошибки HTTP.

Мы обходим ограничения сценариев перекрестного сайта при помощи Сервлета Java как Прокси HTTP. Вызовы к прокси (то, которое работает на том же сервере, который служит остальной части содержания, включая содержание Flex, отправляет запрос к другому серверу, затем передает ответ обратно исходной вызывающей стороне.

1
ответ дан 27 November 2019 в 21:01
поделиться

Может быть, новый Flex 4 - это ответ http://labs.adobe.com/technologies/flex4sdk/

0
ответ дан 27 November 2019 в 21:01
поделиться

RestfulX решил большинство / все проблемы REST с Flex. Он поддерживает Rails / GAE / Merb / CouchDB / AIR / WebKit, и я уверен, что было бы несложно подключить его к вашей реализации Java.

Дима также интегрировал в него библиотеку AS3HTTPClient.

Проверить это вон!

1
ответ дан 27 November 2019 в 21:01
поделиться

Короткий ответ - да, вы можете сделать RESTful с Flex. Вы просто должны работать с ограничениями Flash-плеера (лучше с последними версиями) и содержащего HTTP-стек браузера.

Мы занимаемся RESTful разработкой клиента в Flex более года после решения основной заголовок HTTP-запроса и отсутствие PUT и DELETE через Rails-esque ?_method= подход. Возможно, тактично, но это позволяет сделать работу.

Я заметил некоторые заголовки боли в старом посте блога на http://verveguy.blogspot.com/2008/07/truth-about-flex-httpservice.html

2
ответ дан 27 November 2019 в 21:01
поделиться

Книга Flexible Rails может оказаться полезной - это отличный ресурс о том, как использовать Flex в качестве клиента RESTful. Хотя он ориентирован на использование Flex с фреймворком Rails, я считаю, что эти концепции применимы к любому фреймворку RESTful. Я использовал эту книгу, чтобы быстро освоить Flex с REST.

0
ответ дан 27 November 2019 в 21:01
поделиться

Flex поддерживает REST в лучшем случае слабо. Я потратил много времени на создание прототипа, поэтому знаю большинство проблем. Как упоминалось ранее, из коробки есть поддержка только GET и POST. На первый взгляд кажется, что вы можете использовать конфигурацию прокси в LiveCycle Data Services или Blaze, чтобы получить поддержку PUT и DELETE. Однако это подделка. Запрос, исходящий из вашего приложения Flex, по-прежнему будет POST. Прокси-сервер преобразует его в PUT или DELETE на стороне сервера, чтобы обмануть ваш серверный код. Есть и другие проблемы. Есть мнение, что это лучшее, что могла придумать Adobe. После моей оценки мы решили пойти в другом направлении.

2
ответ дан 27 November 2019 в 21:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: