Веб-сервисы с Google App Engine

Я вижу, что Google App Engine может размещать веб-приложения, которые будут возвращать html и т. Д. Но как насчет веб-служб, которые обмениваются данными через http и принимают / возвращают xml?

Кто-нибудь знает, как это делается в Goggle App Engine с Python или, если на то пошло, на Java (JAS-WX не поддерживается)? Любые ссылки o образцов или статей с большой благодарностью.

Благодаря // 🙂

3 Solutions collect form web for “Веб-сервисы с Google App Engine”

Google App Engine позволяет вам создавать веб-службы, возвращающие любые типы ответов HTTP-ответа. Сюда входят xml, json, text и т. Д.

Например, взгляните на образец примера гостевой книги, предлагаемый Google, который показывает ответ HTTP, возвращаемый как текст / plain:

public class GuestbookServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); if (user != null) { resp.setContentType("text/plain"); resp.getWriter().println("Hello, " + user.getNickname()); } else { resp.sendRedirect(userService.createLoginURL(req.getRequestURI())); } } } 

Кроме того, группа google-приложений – отличное место, чтобы узнать больше, задавать вопросы и видеть пример кода.

Большинство приложений python просто пишут обработчик, который напрямую выводит форму xml … этот пример обслуживает любые запросы GET, отправленные в корневой URL ("/"):

 import wsgiref.handlers from google.appengine.ext import webapp class MainHandler(webapp.RequestHandler): def get(self): self.response.out.write('<myXml><node id=1 /></myXml>') def main(): application = webapp.WSGIApplication([('/', MainHandler)], debug=True) wsgiref.handlers.CGIHandler().run(application) if __name__ == '__main__': main() 

Определенно возможно (и не слишком сложно) использовать GAE для размещения «веб-сервисов, которые обмениваются данными через http и принимают / возвращают xml».

Чтобы анализировать XML-запросы (предположительно входящие в состав запросов HTTP POST или PUT), у вас есть несколько вариантов, например pyexpat или minidom поверх него, например, этот поток (особенно последний пост).

Если вы хотите, вы также можете использовать мини-модуль для создания ответа XML и его записи (например, используя экземпляр StringIO для хранения отформатированного ответа и его метода write в качестве аргумента для метода writexml вашего мини-экземпляра, затем getvalue и используйте getvalue этого экземпляра, чтобы получить нужный результат в виде строки). Несмотря на то, что вы ограничены чистым Python и несколькими «привилегированными» C-кодированными расширениями, такими как pyexpat, это на самом деле не ограничивает ваш выбор так много и не делает вашу жизнь существенно сложнее.

Просто не забудьте указать заголовок заголовка вашего ответа в text/xml (или какой-либо тип мультимедиа, который является даже более конкретным и подходящим, если таковой имеется, конечно!) – и, я рекомендую, использовать UTF-8 (стандартное кодирование текста, которое позволяет вам выразить весь Юникод, будучи простым ASCII, если ваши данные являются просто ASCII! -), а не странными «кодовыми страницами» или регионально ограниченными кодами, такими как семейство ISO-8859.

  • Онлайн-компиляторы / среда выполнения для Java, C ++, Python и ObjC?
  • Вопросы о большой картине, касающиеся Django, Java, Python, HTML и разработки веб-сайтов в целом
  • как мы можем запускать скрипт python (который использует nltk и scrapy) из java
  • Извлечение семантических / стилистических функций из текста
  • Преобразование слова (.docx) в docbook
  • Вытягивание HTML с веб-страницы в Java
  • Получение некодированных данных из облака Google Паб / Sub вместо base64
  • TypeError: nextDouble (): self arg не может быть принужден к java.util.Random
  •  
    Interesting Posts for Van-Lav

    как использовать Flask Jinja2 url_for с несколькими параметрами

    Обработка исключений из urllib2 и механизация в Python

    Совместное использование очереди результатов между несколькими процессами

    Самый простой способ запустить Sphinx в одном файле python

    Matplotlib 1.3.1: plot (matrix ("1,2,3")) -> RuntimeError: превышена максимальная глубина рекурсии

    Почему нужна строка в этой функции python? (памятная рекурсия)

    Возможно ли реализовать функцию «изменить пароль при следующем входе в систему» ​​в администраторе django?

    Как эффективно применять градиентную обрезку в тензорном потоке?

    Почему chardet говорит, что моя кодированная UTF-8 строка (первоначально декодированная из ISO-8859-1) является ASCII?

    Sqlalchemy session.refresh не обновляет объект

    Изменение поведения django-allauth render_authentication_error

    Как читать / понимать сериализованную строку данных PHP в python

    NLTK и Stopwords Fail #lookuperror

    Как предотвратить python pylint, жалующийся на метод sendall сокета класса

    Обманывать категорически отсутствующие ценности в scikit-learn

    Python - лучший язык программирования в мире.