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.