2014-06-09 1 views
1

[문제를 파고 들자면 문제는 라우팅에 관한 것이 아니라 모듈의 엔드 포인트 사용에 관한 것 같습니다. 새로운 질문이 GAE Modules and Google EndpointsGoogle App Engine 모듈 : 라우팅에 대한 혼란 (dispatch.yaml)

GAE 애플리케이션을 모듈로 마이그레이션 중이며 일부 쿼리가 올바르게 라우팅 되었기 때문에 라우팅에 대해 혼란 스럽지만 일부는 올바르게 라우팅되지 않습니다.

내 루트 폴더에 다음과 같은 dispatch.yaml이 있습니다. 이 API 모듈은 모듈 이름으로 Google 클라우드 Enpoints의 API

application: testapp 

dispatch: 
    - url: "*/foo/*" 
    module: foomodule 
    - url: "*/_ah/spi/*" 
    module: api 
    - url: "testapp.appspot.com/" 
    module: default 

그리고 하나 개의 폴더를 사용하고 있음을 참고하는 YAML 파일과 함께 각각 예를 들어, 핸들러,와 URL 패턴을 정의 같은 http://testapp.appspot.com/xxx 같은

application: testapp 
version: alpha 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /static 
    static_dir: static 
- url: /.* 
    script: www.app 

libraries: 
- name: webapp2 
    version: latest 

쿼리가 제대로,/foo는/XXX 사람이 foomodule에 의해 처리됩니다 기본값으로 리디렉션됩니다 내 기본 모듈 /www/www.yaml하지만, API 요청 (/ _ah/SPI/XXX)입니다 404.

과 함께 기본 모듈로 이동하지만 api 모듈에 매핑 된 인스턴스의 로그에서 /_ah/spi/BackendService.logMessages에 대해 200 OK를 볼 수 있습니다.이 파일은 alpha-dot-api-dot-testapp.appspot.com에서 제공되며 404는 testapp.appspot.com에서만 제공됩니다. (NB : testapp.appspot.com에서 내 검색어를 사용하고 싶습니다.)

내가 잘못하고있는 것이 있습니까? 또한 서버에 현재 사용중인 구성을 나열하여 올바르게 배치되었는지 확인하는 방법이 있습니까?

+0

api yaml 파일에'- url :/_ah/spi /'처리기가 있습니까? – GAEfan

+0

예, 핸들러가 있습니다 : - url : /_ah/spi/.* 스크립트 : myapi.app – apassant

+0

실행 했습니까? 'appcfg.py update dispatch.yaml www.yaml api.yaml foo.yaml'? 그리고 api.yaml에는 'module : api'가 있습니까? api 모듈에서 실행중인 열려있는 인스턴스가 있습니까? 그렇다면 부실 코드가있어이를 죽이고 다시 시도하십시오. – GAEfan

답변

2

끝점 API를 별도의 모듈로 분석하고 경로를 설정하기 위해 dispatch.yaml을 사용하고 싶지만 dev_appserver.py를 사용하면 이렇게 할 수없는 것 같습니다. 코드를 기반으로 : https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/devappserver2/dispatcher.py?r=411#704

if (not path.startswith('/_ah/') or 
    any(path.startswith(wl) for wl 
     in DISPATCH_AH_URL_PATH_PREFIX_WHITELIST)): 
    return True 
else: 
    logging.warning('Skipping dispatch.yaml rules because %s is not a ' 
        'dispatchable path.', path) 
    return False 

/_ah/로 시작하는 경로는 디스패치 경로가 아닙니다.