2013-11-25 2 views
0

Предполагая, что следующий код AppEngine/webapp2:Как вводить заголовки запросов перед инициализацией в webapp2.WSGIApplication

import webapp2 

# insert header injection code here... 

class HelloWebapp2(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('Hello, webapp2!') 

app = webapp2.WSGIApplication([ 
    ('/', HelloWebapp2), 
], debug=True) 

Как я могу вводить заголовки запросов, прежде чем приложение инициализируется/называется?

ответ

0

Мы решили просто расширить webapp2.RequestHandler и создать базовый класс для всех других обработчиков, которые мы используем в нашем приложении. В этом базовом классе мы переопределяем метод dispatch и вводим заголовки. Это делает эти заголовки доступными для экземпляров любых классов, которые происходят из этого базового класса.

class BaseHandler(webapp2.RequestHandler): 
    def dispatch(self): 
    // inject headers here (self.request.headers) 
    super(BaseHandler, self).dispatch() 

class Page|SecurePage|APIEndPoint|ETC(BaseHandler): 
    // ... 
+0

не лучше использовать 'webapp2.RequestHandler.dispatch (само)' в перегруженной способ доставки, чем 'супер 'диспетчерская? – Tjorriemorrie

+0

Если честно, я не знаю, какая разница между этими двумя вариантами. Что вы слышали/читали? – Trevor

+0

Это в документах: '' '# Отправлять запрос. webapp2.RequestHandler.dispatch (self) '' ' – Tjorriemorrie

1

Рассмотрите возможность использования какой-либо формы wsgi middleware, которая ваша обертка app с.

Из википедии http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface Под Спецификация

WSGI промежуточного слой реализует обе стороны API, так что он может промежуточных между сервером WSGI и приложением WSGI: в промежуточного уровня выступает в качестве приложения от некоторых WSGI сервера точка Просмотр и как сервер с точки зрения приложения WSGI. A Компонент «промежуточного программного обеспечения» может выполнять следующие функции: Маршрутизация запроса на различные целевые объекты на основе целевого URL, после изменения переменных среды. Разрешение нескольких приложений или рамки для запуска бок о бок в том же процесса загрузки балансировки и удаленной обработки, путем пересылки запросов и ответов по сети Выполните постобработку контента, такие как применяя XSLT таблицы стилей

См статья WSGI и WSGI Middleware is Easy http://be.groovie.org/2005/10/07/wsgi_and_wsgi_middleware_is_easy.html

Я использую обертки промежуточного программного обеспечения для некоторых вещей в appengine.

Управление сеансом, распространение событий - (т.е. передача события на новый сеанс, новый вход). авторизация (которая отличается от аутентификации). Хотя я никогда не использовал webapp (2), он работает точно так же и совместим с wsgi.

+0

бы неплохо иметь ссылку на цитируемый текст, а .. :) – Lipis

Смежные вопросы