3

EclipseでGoogleCloudEndpointsプロジェクトに、と注釈が付けられたサーブレットクラスがある場合、Endpointsフレームワークは、プロジェクトが正常にコンパイルされたときに名前が@Api(name="helloworld")付けられたファイルを生成します。war/WEB-INF/helloworld-v1.apiただし、コンパイルエラーがなくても、このファイルが生成されない場合があります。これは、「GAEエンドポイントコード規約エラー」と呼ぶものだけです。

例-動作中:

public class TestEntity {
    public String Text;
    public TestEntity(String text){
        Text = text;
    }
}

@ApiMethod
public TestEntity getTestEntity(){
    return new TestEntity("Hello world"); 
}

例-機能していません:

// The TestEntity-class is unchanged
@ApiMethod
public TestEntity getTestEntity(String input){
    return new TestEntity("Hello world"); 
}

後者の例の問題は、Stringパラメーターを。で注釈を付けずに入力として受け取ること@Namedです。この例ではそれを知っていますが、これがそれほど明白でない場合もあるかもしれません。

.apiファイルが生成されない理由に関するある種のエラーログを読み取ることができる場所はありますか?

私は慣例によりコードのファンですが、私が間違っていることについてフィードバックを得ることができない場合、プログラミングの効率は本当に一歩後退します。Eclipseはコンパイラエラーフィードバックを提供します。Google Cloud Endpoints Frameworkは、Code-By-Convention-Rule-Breakingフィードバックを提供する必要があります。

4

1 に答える 1

4

コード生成が失敗した場合、それは(ほとんどではないにしても)要求された機能の1つですが、現在、適切なロギングまたはエラーメッセージングは​​ありません。暫定的に、一般的な障害のケースのリストを次に示します。

  1. 戻りタイプが無効です。戻り型はJavaBean規則に準拠したオブジェクトである必要があり、、、などの型Objectは許可されStringIntegerいません。
  2. 1つ以上の引数タイプが無効です。メソッドは本体内で最大1つのオブジェクトを受け入れることができPOST、このオブジェクトもJavaBeanの規則に準拠している必要があります。@Namedメソッドは、クエリ文字列を介して(アノテーションを使用して)0個以上の引数を受け入れることができ、これらはスカラー型(たとえばStringInteger)である必要があります。
  3. API、メソッド、またはパラメーターの名前が無効です。API、メソッド、およびパラメーターは、次の正規表現に一致するように名前を付ける必要があります[a-z]+[A-Za-z0-9]*。慣例ではlowerCamelCase、命名に使用することも提案されています(ただしalllowercase許可されています)。
于 2013-02-19T19:34:23.507 に答える