Facile à renvoyer un pur éventail d'objets à partir du point final d'AppEngine?

Je fais des points d'extrémité AppEngine pour un backend RESTFul dans AppEngine. J'utilise AngujarJS du côté client, gérant les données du serveur avec ngResource.

Mon problème: je ne peux pas renvoyer un tableau pur d'AppEngine Endpoint. J'ai essayé ceci:

@ApiMethod( name = "mpscorerapi.getAllResults", path = "/tournament/{tournamentId}/result/" httpMethod = HttpMethod.GET ) public List<SimpleResult> getAllResults(@Named("tournamentId") Long tournamentId) throws NotFoundException { ... } 

Bien que cela n'obtienne pas les données du serveur vers le client, il ne construit pas un tableau d'objets "SimpleResult", mais un objet unique qui contient un tableau de SimpleResult, appelé "items":

  { "items": [ { "id": "5733953138851840", "h": 0, "r": 0, "kind": "mpscorer#mpscorerapiItem" }, { "id": "5733953138851841", "h": 1, "r": 2, "kind": "mpscorer#mpscorerapiItem" } ], "kind": "mpscorer#mpscorerapi", "etag": "\"SALE0WnK41Jo38zV0ILO62-rVOI/Mh2G6GGztZv-wj_56Kjf1o1XBaM\"" } 

Cela rend ngResource assez inutile, car la méthode "requête" attend un tableau pur comme réponse:

 $scope.resultsSrv = Result.query({tournamentID:tournamentId}) //fails!!!! 

Une idée sur la façon d'obtenir simplement le tableau "SimpleResult"?

Merci!

Vous devez transformer la demande, par exemple comme suit:

 angular.module('myApp') .factory('Result', function Result($http, $resource) { var Result = $resource('/tournament/:tournamentId/result/', {}, { query: { method: 'GET', isArray: true, transformResponse: [].concat($http.defaults.transformResponse, function transformResponse(data) { return data.items; }) } }); return Result; }); 

J'ai eu un défi similaire. J'ai fini par utiliser jQuery pour analyser. En utilisant la carte, c'est très simple.

Mon cas était:

 $.map(locs.items, function (loc) { return { value: loc.longName };