[Après avoir creusé le problème, il semble que le problème ne concerne pas le routage mais l'utilisation des points de terminaison dans les modules. Nouvelle question à GAE Modules and Google EndpointsModules Google App Engine: Confusion sur le routage (dispatch.yaml)
Je migre une application GAE vers des modules, et je suis confus à propos du routage, car certaines requêtes sont correctement routées, mais pas toutes.
J'ai le message suivant: dispatch.yaml dans mon dossier racine. Notez que ce module api utilise l'API Google Cloud Enpoints
application: testapp
dispatch:
- url: "*/foo/*"
module: foomodule
- url: "*/_ah/spi/*"
module: api
- url: "testapp.appspot.com/"
module: default
Et puis un dossier par nom du module, chacun avec un fichier YAML, définissant les modèles d'URL avec des gestionnaires, par exemple /www/www.yaml pour mon module par défaut
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
requêtes telles que http://testapp.appspot.com/xxx sont correctement redirigés par défaut,/foo/xxx sont ceux qui sont gérées par le foomodule, mais les demandes de l'API (/ _ah/spi/xxx) aller vers le module par défaut avec un 404.
Cependant, je peux voir un 200 OK pour /_ah/spi/BackendService.logMessages dans les journaux de l'instance mappée au module api. Celui-ci vient de alpha-dot-api-dot-testapp.appspot.com - tandis que les 404 proviennent de testapp.appspot.com seulement. (NB: je voudrais que mes requêtes fonctionnent à partir de testapp.appspot.com)
Y a-t-il quelque chose que je fais de mal? Aussi, existe-t-il un moyen de lister la configuration actuellement utilisée sur le serveur pour s'assurer qu'il est correctement déployé?
Avez-vous un gestionnaire '- url:/_ah/spi /' dans votre fichier api yaml? – GAEfan
Oui, j'ai des gestionnaires: - url: /_ah/spi/.* script: myapi.app – apassant
Avez-vous exécuté: 'appcfg.py mise à jour dispatch.yaml www.yaml api.yaml foo.yaml'? Et, dans api.yaml, at-il 'module: api'? Avez-vous des instances ouvertes qui s'exécutent sur le module api? Si c'est le cas, ils ont du code périmé - tuez-les et essayez à nouveau. – GAEfan