0

Ich habe ein Google Cloud Endpoints v2-Projekt mit dem von Google bereitgestellten Startcode gestartet, der eine API namens "echo" verfügbar macht.kann keine zusätzlichen APIs Endpunktklassen zu GCP-Endpunkten hinzufügen v2

Mein Ziel ist es, eine weitere exponierte Klasse hinzuzufügen (ein Klassen-/API-Name pro Geschäftsmodul). Nach der Bereitstellung generieren alle Aufrufe der neuen API keinen Fehler "NOT FOUND".

Als Lösung habe ich versucht, in die web.xml zu schauen und habe die folgenden Änderungen vorgenommen.

Initial Web.xml Version:

<!-- Route API method requests to the backend. --> 
<servlet-mapping> 
    <servlet-name>EndpointsServlet</servlet-name> 
    <url-pattern>/_ah/api/*</url-pattern> 
</servlet-mapping> 

Ich habe meine neue Servlet hinzugefügt und versuchte, wie unten ein neues Servletzuordnung hinzuzufügen:

<servlet-mapping> 
    <servlet-name>EndpointsServlet</servlet-name> 
    <url-pattern>/_ah/api/echo/*</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>UserEndpointsServlet</servlet-name> 
    <url-pattern>/_ah/api/user/*</url-pattern> 
</servlet-mapping> 

nun nach dem Hinzufügen der/echo/* zu Bei der ersten Servlet-Zuordnung haben die ECHO-Arbeitsdienste die Wartung angehalten und das System kann den neuen Dienst weiterhin nicht aufrufen.

Weiß jemand, was ich falsch mache und was ist die Lösung? Ich glaube nicht, dass diese Funktion vom Endpoints v2-Framework nicht unterstützt wird, da es eine gute Design-Praxis ist, diese Trennung vorzunehmen.

Antwort

0

Sie sollten das gleiche Servlet verwenden, eine init-param mit all den Klassen, die Sie Endpoint verwenden müssen:

<init-param> 
     <param-name>services</param-name> 
     <param-value>com.example.echo.Echo,com.example.echo.Echo2</param-value> 
    </init-param> 

Sie nicht /_ah/api/echo/* oder /_ah/api/user/* in Ihrem web.xml verwenden sollten. Verwenden Sie stattdessen @Api(name = "echo") oder @Api(name = "user") und binden Sie EndpointsServlet an /_ah/api/*.

Verwandte Themen