2017-02-21 28 views
0

Я хочу развернуть v2 моего API конечной точки google. в этой версии 2, я добавил ApiMethod с параметромGoogle clould endpoint Метод Api, сгенерированный без обязательного параметра

/** 
* An endpoint class we are exposing 
*/ 
@Api(
    name = "myApi", 
    version = "v2", 
    namespace = @ApiNamespace(
    ownerDomain = "awesome.me.com", 
    ownerName = "awesome.me.com", 
    packagePath = "api/v2" 
) 
) 
public class MyEndpointV2 extends MyEndpoint{ 


    @ApiMethod(name = "getContact") 
    public Charges getContact(ContactRequest request){ 
    return ContactHandler.getContact(request); 
    } 
} 

Как вы можете видеть, мой V2 расширяет мой V1 Апи, так что я могу получить доступ ко всем моим методам V1. проблема в том, что мой новый метод генерируется без параметраContactRequest. то есть, когда я пытаюсь вызвать метод в своем модуле приложения, он выглядит следующим образом:

myapi.getContact() 

В чем может быть проблема? Я пытался очистить построить мой проект, но ничего не происходит

EDIT Вот MyEndPoint класс

@Api(
     name = "myApi", 
     version = "v1", 
     namespace = @ApiNamespace(
     ownerDomain = "awesome.me.com", 
     ownerName = "awesome.me.com", 
     packagePath = "" 
    ) 
    ) 
    public class MyEndpoint{ 


    @ApiMethod(name = "getPeriod") 
    public Period getPeriod(@Named("days")long days) { 
    return Handler.getPeriod(days); 
    } 
    //other api methods 
    } 
+0

Вы также можете отправить класс MyEndpoint? –

+0

@MichaelMeyer Я сделал так –

+0

@MichaelMeyer, когда я меняю имя метода api из 'getContact()' на нечто вроде 'contact()' i могу передать параметр 'ContactRequest'. Почему так? –

ответ

0

Эта ошибка может Причиненный вашим наследованием. Пожалуйста, прочтите следующую документацию

https://cloud.google.com/appengine/docs/java/endpoints/multiclass

Он говорит, что вы должны использовать одни и те же значения для аннотаций. Вы пытались переопределить значения для версии и пакета. Это может привести к неопределенному поведению

+0

не работает. Мне пришлось переименовать свои методы Api. например, переименовали 'getContact (ContactRequest req) {}' в 'fetchContact (ContactRequest req) {}' –

+0

, что вы получили? Удалили ли вы аннотации из класса MyEndpointsV2? Вам не нужны аннотации в унаследованном классе –

+0

, но мне нужно увеличить версию в классе MyEndpointsV2. это означает, что я также должен включать аннотации в мой класс MyEndpointsV2 –