pricing precios planes google flexible facturacion engine app google-app-engine google-cloud-endpoints

google-app-engine - precios - planes google cloud



Puntos finales de la nube de GAE: Api no se actualiza después del despliegue (6)

Esto es lo que me pasó a mí.

Probé mi punto final en localhost y funcionó bien.

Implementé mi punto final en el sitio de aplicaciones y cuando hice las solicitudes recibí en el navegador el mensaje "No encontrado".

Así que miré en los registros y cuando realicé solicitudes al punto final vi un código de error http http en el archivo favicon. Y en los efectos olvidé poner ese archivo en mi implementación.

¡Así que rediseñé mi guerra con el archivo de favicon, desapareció el código HTTP 404 y el punto final funcionó bien también en appspot!

Me doy cuenta de que esto puede sonar tonto, pero es lo que experimenté. (Me disculpo por mi pobre inglés)

Estoy empezando a usar puntos finales en la nube en mi proyecto GAE, pero he tenido problemas con la API que no se actualiza en el servidor.

  • localhost: 8888 / _ah / api / explorer está bien.

Pero cuando despliegue, nada cambia.

  • myapp.appspot.com:8888/_ah/api/explorer es malo

La investigación adicional muestra el ejemplo de actualización de puntos de finalización de URL: https://myapp.appspot.com/_ah/api/myapp/v1/foo/list

Pero la API de cliente cargada sigue siendo incorrecta. ejemplo: gapi.client.load (''myapp'', ''v1'', callback, url); gapi.client.myapp.foo.list ();

Si cambiara la llamada de foo / list a foo / list2, la url de reposo se actualizaría, el paquete api no lo haría.


Me di cuenta de que si carga su aplicación por primera vez sin lo siguiente en su web.xml:

<security-constraint> <web-resource-collection> <url-pattern>/_ah/spi/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

Luego, su adaptador bns se configurará como http en el futuro. Cuando agrego lo anterior luego, obtengo el código http 302 en /_ah/spi/BackendService.getApiConfigs y los puntos finales nunca se actualizan.

Así que ahora he vuelto a no utilizar https en / _ah / spi y mis puntos finales se están actualizando. Supongo que aquellos que ven que sus puntos finales no se actualizan vuelven a la primera configuración que tenían para ssl en / _ah / spi /.

Guiñada.


También estaba obteniendo un doc de descubrimiento de API obsoleto después de implementar una nueva versión, GAE tardó un par de minutos en comenzar a brindarme el nuevo.


Trataré de cubrir los dos casos en los que la gente podría encontrarse:

Lado del cliente:

La aplicación web Google APIs Explorer se almacena en caché de forma agresiva, por lo que deberá borrar su caché o forzar una actualización cuando actualice su servidor API para ver los cambios en el cliente.

Lado del servidor (aplicación de App Engine desplegado):

Si tiene problemas de implementación, hay dos lugares para buscar cuando se depura:

  • Verifique sus Registros de administrador ( https://appengine.google.com/adminlogs?&app_id=s~YOUR-APP-ID ) después de la implementación. Después de una implementación exitosa de su código de aplicación, debería ver el mensaje:

    Completed update of a new default version

    y poco después deberías ver:

    Successfully updated API configuration

    Si este mensaje indica que la actualización de la configuración de la API falló, debe volver a implementarla. Si dicho error es persistente, debe notificarnos de un error. Si no ve ningún mensaje sobre la configuración de su API, debe verificar que la ruta /_ah/spi/.* se /_ah/spi/.* explícitamente en su configuración de enrutamiento ( app.yaml para Python, web.xml para Java).

  • Verifique los registros de su aplicación ( https://appengine.google.com/logs?&app_id=s~YOUR-APP-ID ) después de la implementación. Una vez finalizada la implementación, la infraestructura API de Google realiza una solicitud a /_ah/spi/BackendService.getApiConfigs en su aplicación para que su configuración de API (como JSON) pueda registrarse en la infraestructura API de Google y se puedan crear todas las configuraciones relacionadas con el descubrimiento. Si esta solicitud no se completa con 200, entonces los cambios de su API no se mostrarán ya que la infraestructura API de Google no tendrá nada que registrar.

  • Si obtiene consistentemente un redireccionamiento 302 para solicitudes a /_ah/spi/BackendService.getApiConfigs , es porque usted (o la configuración de su API generada) ha especificado un "adaptador bns" que usa http: como el protocolo en su raíz API, pero su web.xml (Java) o app.yaml (Python) es necesario que las rutas a través de /_ah/spi sean seguras. Esto hará que las solicitudes utilizando http: como el protocolo se redirigen (utilizando 302 ) a la misma página con https: como el protocolo. Esto se discussed en el foro del Tester de confianza antes de ir a Experimental.


Tuve el mismo error No encontrado (el código de error 404) cuando llamé a mi API usando esta URL

https: // MY_APP_ID.appspot.com / _ah / api / MY_SERVICE / v1 / user

Intenté todo y finalmente lo solucioné eliminando los archivos de descubrimiento de WEB-INF y solo guardé MY_SERVICE-v1.api y luego volví a desplegar la API. Funciona bien ahora.


Tuve el mismo problema y revisé los registros de administración, otros registros, etc., pero aún así mi API no se actualizaba a la última versión.

Así que decidí consultar el código API para el último método que había escrito (estoy escribiendo en Java 7). Y descubrí que GAE no le gusta declaraciones como:

if (!blocked){ .... }

Cambié eso a:

if (blocked == false) { ... }

Y funcionó como un encanto. Entonces, por lo que parece, GAE escanea los nuevos métodos API y no acepta algunos accesos directos.