1
votes

Spring @GetMapping renvoyant un tableau vide

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.


1 commentaires

Essayez d'ajouter @PathVariable à votre nom d'utilisateur de paramètre.


3 Réponses :


3
votes

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


0 commentaires

2
votes

Vous devez utiliser @PathVariable,

public List<Data> findByUsername(@PathVariable("username") String username)


0 commentaires

0
votes

L'annotation @PathVariable doit être transmise avec le nom du champ entre speechmarks "" comme argument pour findByUsername avant "String username"


0 commentaires