2013-11-25 1 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

이는'슈퍼보다 오버라이드 (override) 발송 방법에''webapp2.RequestHandler.dispatch (자기)를 사용하는 것이 좋은 것은 아닙니다 '파견? – Tjorriemorrie

+0

솔직히 말해서, 두 가지 옵션의 차이점을 알 수는 없습니다. 당신은 무엇을 들었습니까/읽었습니까? – Trevor

+0

이것은 docs에 있습니다 :'''# 요청을 보내십시오. webapp2.RequestHandler.dispatch (self)''' – Tjorriemorrie

1

의 포장지에 wsgi 미들웨어를 사용하는 것을 고려해보십시오. 사양 개요에서 위키 피 디아 http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface에서

WSGI 미들웨어는 API의 양쪽을 구현 그것이 WSGI 서버와 WSGI 응용 프로그램 사이의 중간 할 수 있도록 : 일부 WSGI 서버에서 응용 프로그램으로 미들웨어 역할을 point of 보기와 일부 WSGI 응용 프로그램의 관점에서 서버로. A "미들웨어"구성 요소는 다음과 같은 기능을 수행 할 수 있습니다. 요청을 대상 URL ( )에 따라 다른 응용 프로그램 개체에 라우팅하면 그에 따라 환경 변수가 변경됩니다. 네트워크를 통해 요청 과 응답을 전달하여, 동일한 프로세스로드 밸런싱 및 원격 처리에 나란히 실행 여러 응용 프로그램 또는 프레임 워크를 허용하면 같은 으로 적용 XSLT 스타일 시트, 컨텐츠 후 처리를 수행

참조 기사 WSGI 및 WSGI 미들웨어는 간단합니다. http://be.groovie.org/2005/10/07/wsgi_and_wsgi_middleware_is_easy.html

appengine에서 여러 가지 용도로 미들웨어 래퍼를 사용합니다.

세션 관리, 이벤트 전파 - (즉, 새 세션에서 이벤트를 보내고 새 로그인). 인증 (다른 인증) webapp (2)를 사용한 적이 한번도 없지만 같은 방식으로 작동하고 wsgi를 준수합니다.

+0

뿐만 아니라 인용 텍스트에 대한 링크를 가지고 좋은 것입니다 .. :) – Lipis