2017-04-06 4 views
0

Ok, j'essaie vraiment dur d'aimer HATEOAS. Spring Boot avec ses dépôts REST est incroyable. Est-ce que tout ce que je veux? J'ai juste deux exigences qui ne devraient pas être si rares. Alors, comment dois-je faire ce qui suit:Comment aimer Spring Hateoas résoudre à des exigences simples

Étant donné que j'ai les deux entités suivantes:

@Entity() 
public class GameConsole{ 
    @Id 
    private String name; 
} 
@Entity() 
public Class Game{ 
    @Id 
    private String name; 
    @ManyToOne 
    private GameConsole gameConsole; 
} 

Supposons que je REST Référentiels exposer les deux entités.

1 - Comment puis-je générer une liste de table avec les noms des jeux et les noms des consoles avec une requête:

Demande de GET -/jeux En utilisant tout cadre, jQuery, angulaire, doesn « t importe, juste remplir les éléments suivants:

| Game console | Game  | 
| PS4   | Uncharted | 
| XBOX   | HALO  | 

le problème est que quand je fais une recherche/jeux, je reçois une liste de jeux avec des liens vers/jeux/auréole/gameconsole, et non l'ID réel de la gameconsole . Est-ce que cela signifie que je dois boucler et interroger chaque élément pour obtenir le nom de la console de jeu?

2 - le menu déroulant

Disons que j'ai une page Web pour modifier mon jeu. Et je veux ajouter un menu déroulant et mettre la console de jeu mise à jour. Pour remplir mon menu déroulant, j'interroge/gameConsoles et j'obtiens une liste de consoles. Encore une fois mon problème ici est que l'identifiant que je reçois du jeu est lié au/game/halo/gameConsole qui ne peut être associé à aucun des éléments retournés par/gameConsoles.

Comment résoudre ce problème?

Vraiment apprécier la patience les gars au cas où la réponse est simple.

Répondre

0

Dans le contexte de repos de données printemps vous pouvez travailler avec des projections - see here.

Au moyen de projections, vous pouvez intégrer vos objets référencés plutôt que d'obtenir un lien vers la ressource.

+0

La projection s'effectue au niveau de l'objet et non au niveau de la liste. Sauf si je me trompe. – Rafael

+0

Vous pouvez également utiliser des projections au niveau de la liste. Si vous utilisez l'annotation @RepositoryRestResource dans votre application, vous pouvez même définir la projection par défaut pour les éléments répertoriés sous "_embedded" en définissant l'option "excerptProjection". – dcpastoors