Google Cloud Endpoints (с помощта на GAE Java, Eclipse) – Кои методи от класа са включени?

Не мога да намеря отговор в документите на Google. Както разбирам от документите, анотацията @Api се прилага към клас, за да покаже, че е част от API на крайната точка, а @ApiMethod след това показва кои методи от този клас са част от API на облака.

Въпреки това, дори ако даден метод не е анотиран с @ApiMethod, Google App Engine Cloud Endpoints Builder пак включва този метод като част от Cloud API.

Как мога да изключа метод от API? Ако не е възможно, добра алтернатива ли е да се предадат получените параметри на API към отделен обект (който е поле на пояснения клас), който съдържа необходимия метод?

Включвам следния код, който е клас, анотиран с @Api за пояснение (вижте коментара в горната част на метода ggetStr):

package com.barcodeapp.www.app;

import java.util.ArrayList;
import java.util.List;

import com.google.api.server.spi.config.Api;

@Api(
    name = "cetest",
    version = "v1",
    scopes = {EndpointsConstants.EMAIL_SCOPE},
    clientIds = {EndpointsConstants.WEB_CLIENT_ID, EndpointsConstants.ANDROID_CLIENT_ID, com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID},
    audiences = {EndpointsConstants.ANDROID_AUDIENCE}
)
public class CloudTest  {

   public List<String> list() {
        List<String> strs = new ArrayList<String>();
        strs.add("a"); strs.add("b");
        return strs;
   }

   /* THE FOLLOWING METHOD NEEDS TO BE EXCLUDED FROM CLOUD API */
   public String ggetStr() {
       return "abc";
   }

}

РЕДАКТИРАНЕ: Включих библиотечния .jar файл в папката WAR/WEB-INF/lib - няма разлика.

По-долу са двата класа за пълнота:

package com.cloudtest.lib;

public class ClassInLibProj {

}

и

package com.cloudtest.my;

public class ClassInLocalProj {

}

Благодаря.


person Floris    schedule 09.01.2014    source източник


Отговори (1)


Може да греша, но изглежда, че единственият начин в момента вашият метод да не бъде включен е да направите това private във вашия клас.

Това е така, защото:

  • Ако вашият метод е анотиран с APIMethod, тогава той е включен
  • Ако вашият метод не е анотиран с APIMethod, но е публичен, той също се взема. Това вероятно се дължи на анотацията API в горната част.

Има повдигнат проблем: https://code.google.com/p/googleappengine/issues/detail?id=10372&thanks=10372&ts=1386300958

person Romin    schedule 09.01.2014