0

Googleが提供するスターターコードを使用して、「エコー」という名前のAPIを公開するGoogleクラウドエンドポイントv2プロジェクトを開始しました。GCPエンドポイントにAPIエンドポイントクラスを追加できません。v2

私の目標は、公開された別のクラス(ビジネスモジュールごとに1つのクラス/ API名)を追加することです。 導入後は、新しいAPIへのすべての呼び出しで「NOT FOUND」エラーが生成されません。

解決策として、私はweb.xmlを調べようとしましたが、以下の変更がありました。

初期WEB.XMLバージョン:

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

は、私は私の新しいサーブレットを追加し、以下のように新しいサーブレットマッピングを追加しようとしている:/エコー/ *に追加した後、今

<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> 

を初期サーブレットマッピング、ECHOワーキングサービスがサービスを停止し、システムは引き続き新しいサービスを呼び出すことができませんでした。

誰かが私が間違っていることを知っていて、解決策は何ですか? この機能はエンドポイントv2フレームワークではサポートされていないとは思わない。

答えて

0

はあなたが必要とするエンドポイントのすべてのクラスでのinit-PARAMを使用して、同じサーブレットを使用する必要があります:あなたは、あなたのweb.xmlに/_ah/api/echo/*または/_ah/api/user/*を使用しないでください

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

。代わりに、@Api(name = "echo")または@Api(name = "user")を使用し、EndpointsServletを/_ah/api/*にバインドします。

関連する問題