Lorsque vous utilisez GET avec postman sur le lien http: // localhost: 8081 / api / data / mydatas / admin
j'obtiens un tableau vide. J'ai également essayé d'ajouter {"username": "admin"} mais il revient toujours sous forme de tableau vide.
voici le code de mon service java:
@GetMapping("/mydatas/{username}")
public List<Data> findByUsername(String username) {
username = "admin";
Query q = em.createQuery("select data from Data data where data.username = :username");
q.setParameter("username", username);
List<Data> mydatas = q.getResultList();
return mydatas;
}
Cependant , si j'ajoute username = "admin"; comme ci-dessous. Il renverra le tableau avec plein de données.
@GetMapping("/mydatas/{username}")
public List<Data> findByUsername(String username) {
Query q = em.createQuery("select data from Data data where data.username = :username");
q.setParameter("username", username);
List<Data> mydatas = q.getResultList();
return mydatas;
}
Qu'est-ce que je fais mal? Ps, je suis un novice qui a encore du mal avec les bases.
3 Réponses :
ajoutez @PathVariable avant votre paramètre comme ceci
@PathVariable String username
Avec cette annotation, vous dites à Spring de récupérer le nom d'utilisateur à partir du chemin de l'URL
Vous devez utiliser @PathVariable,
public List<Data> findByUsername(@PathVariable("username") String username)
L'annotation @PathVariable doit être transmise avec le nom du champ entre speechmarks "" comme argument pour findByUsername avant "String username"
Essayez d'ajouter @PathVariable à votre nom d'utilisateur de paramètre.