2013-02-07 12 views
5

Im używam Chmury punktów aplikacji Google App Engine i próbuję odebrać parametr kolekcji. Nie jestem pewien, czy mogę to zrobić. Wiem, że mogę zwrócić listę lub jakąkolwiek kolekcję.Parametr zbierania punktów końcowych w chmurze Parametr

to:

public List<Pair> initializationSetup(Pair pPair){} 

działa dobrze, ale gdy próbuję otrzymać listę par, plik .api nie jest tworzony.

public List<Pair> initializationSetup(List<Pair> pPairs){ 

Dzięki

+0

Czego chcesz wynikowy żądania REST aby wyglądać? Żądanie 'GET' takie jak'? PPairs = abc & pPairs = def & pPairs = ghi' lub żądanie 'POST', które ma coś takiego jak' {"pPairs": ["abc", "def", "ghi"]} 'w żądaniu ciało? –

+0

@Jason Hall, dlaczego to ma znaczenie? Do czego zmierzasz? – aez

Odpowiedz

10

Chmura Punkty końcowe dotyczy jedynie klasy posiadające standard Bean.

Więc stworzył nową klasę o nazwie ObjectListContainer:

public class ObjectListContainer { 
    public List<Object> getObjectsList() { 
     return ObjectsList; 
    } 
    public void setObjectsList(List<Object> objectsList) { 
     ObjectsList = objectsList; 
    } 
    private List<Object> ObjectsList; 
} 

sam problem, jeśli starają się zwracać ciąg, nie można. Musisz utworzyć kontener StringContainer.

+0

Myślę, że można użyć adnotacji '@ javax.inject.Named' dla' String's. Zobacz [Endpoints doc] (https://developers.google.com/appengine/docs/java/endpoints/annotations#named). – user802421

+0

Możesz użyć 'String's jako parametrów (z @Named, jak mówiłeś), ale nie możesz ich zwrócić, jak powiedział @davidbq. – willlma

1

Użyłem podobnego rozwiązania po przemyśleniu podczas długich godzin. Spróbuj tego:

public class JsonList<T> { 
private List<T> listItens; 

public List<T> getListItens() { 
    return listItens; 
} 

public void setListItens(List<T> listItens) { 
    this.listItens = listItens; 
}} 

w swojej metodzie:

@ApiMethod(
     name = "name", 
     path = "path", 
     httpMethod = ApiMethod.HttpMethod.POST) 
public CollectionResponse<Information> getInformation(JsonList<String> listOfItens) {}