Recherche…


Paramètres

Annotation Colonne
@Manette Indique qu'une classe annotée est un "contrôleur" (contrôleur Web).
@RequestMapping Annotation pour mapper des requêtes Web sur des classes de gestionnaires spécifiques (si nous les avons utilisées avec class) et / ou des méthodes de gestionnaire (si nous avons utilisé des méthodes).
method = RequestMethod.GET Type de méthode de requête HTTP
ResponseBody L'annotation qui indique une valeur de retour de méthode doit être liée au corps de la réponse Web
@RestController @Controller + ResponseBody
@ResponseEntity Extension de HttpEntity qui ajoute un code d'état HttpStatus, nous pouvons contrôler le code http de retour

Créer un service REST

  1. Créez un projet en utilisant STS (Spring Starter Project) ou Spring Initializr (sur https://start.spring.io ).
  2. Ajoutez une dépendance Web dans votre fichier pom.xml:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

ou tapez Web dans la zone Search for dependencies , ajoutez la dépendance Web et téléchargez le projet compressé.

  1. Créer une classe de domaine (utilisateur)
 public class User {
    
        private Long id;
    
        private String userName;
    
        private String password;
    
        private String email;
    
        private String firstName;
    
        private String lastName;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", email=" + email
                    + ", firstName=" + firstName + ", lastName=" + lastName + "]";
        }
    
        public User(Long id, String userName, String password, String email, String firstName, String lastName) {
            super();
            this.id = id;
            this.userName = userName;
            this.password = password;
            this.email = email;
            this.firstName = firstName;
            this.lastName = lastName;
        }
    
        public User() {}
    }
  1. Créez la classe UserController et ajoutez les annotations @Controller , @RequestMapping
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. Définir la variable statique List users pour simuler la base de données et ajouter 2 utilisateurs à la liste
    private static List<User> users = new ArrayList<User>();

    public UserController() {
        User u1 = new User(1L, "shijazi", "password", "[email protected]", "Safwan", "Hijazi");
        User u2 = new User(2L, "test", "password", "[email protected]", "test", "test");
        users.add(u1);
        users.add(u2);
    }
  1. Créer une nouvelle méthode pour renvoyer tous les utilisateurs dans la liste statique (getAllUsers)
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. Exécutez l'application [par mvn clean install spring-boot:run ] et appelez cette URL http://localhost:8080/api/users

  2. Nous pouvons annoter la classe avec @RestController , et dans ce cas nous pouvons supprimer le ResponseBody de toutes les méthodes de cette classe (@RestController = @Controller + ResponseBody) , un autre point nous pouvons contrôler le code http si nous utilisons ResponseEntity , nous allons implémenter les mêmes fonctions précédentes mais en utilisant @RestController et ResponseEntity

@RestController
@RequestMapping(value = "api2")
public class UserController2 {

    private static List<User> users = new ArrayList<User>();

    public UserController2() {
        User u1 = new User(1L, "shijazi", "password", "[email protected]", "Safwan", "Hijazi");
        User u2 = new User(2L, "test", "password", "[email protected]", "test", "test");
        users.add(u1);
        users.add(u2);
    }
    
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public ResponseEntity<?> getAllUsers() {
       try {
           return new ResponseEntity<>(users, HttpStatus.OK);
       } catch (Exception e) {
           return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
       }
    }
}

maintenant, essayez d'exécuter l'application et appelez cette URL http: // localhost: 8080 / api2 / users

Créer un service de repos avec JERSEY et Spring Boot

Jersey est l'un des nombreux frameworks disponibles pour créer des Rest Services. Cet exemple vous montre comment créer des Rest Services avec Jersey et Spring Boot.

1. Configuration du projet

Vous pouvez créer un nouveau projet en utilisant STS ou en utilisant la page Spring Initializr . Lors de la création d'un projet, incluez les dépendances suivantes:

  1. Jersey (JAX-RS)
  2. Web

2.Créer un contrôleur

Laissez-nous créer un contrôleur pour notre service Web Jersey

@Path("/Welcome")
@Component
public class MyController {
    @GET
    public String welcomeUser(@QueryParam("user") String user){
        return "Welcome "+user;
    }    
}

@Path("/Welcome") indique au framework que ce contrôleur doit répondre au chemin URI / Welcome

@QueryParam("user") indique au framework que nous attendons un paramètre de requête avec le nom user

Configurations de Jersey 3.Wiring

Configurons maintenant Jersey Framework avec Spring Boot: Créez une classe, plutôt un composant spring qui étend org.glassfish.jersey.server.ResourceConfig :

@Component
@ApplicationPath("/MyRestService")
public class JerseyConfig extends ResourceConfig {
    /**
     * Register all the Controller classes in this method 
     * to be available for jersey framework
     */
    public JerseyConfig() {
        register(MyController.class);
    }

}

@ApplicationPath("/MyRestService") indique au framework que seules les requêtes adressées au chemin /MyRestService sont censées être gérées par le framework jersey, les autres requêtes doivent toujours continuer à être gérées par le framework Spring.

C'est une bonne idée d'annoter la classe de configuration avec @ApplicationPath , sinon toutes les requêtes seront traitées par Jersey et nous ne pourrons pas le contourner et laisser un contrôleur de printemps le gérer si nécessaire.

4.Done

Démarrez l'application et lancez un exemple d'URL comme (en supposant que vous avez configuré le démarrage par le démarrage pour s'exécuter sur le port 8080):

http://localhost:8080/MyRestService/Welcome?user=User

Vous devriez voir un message dans votre navigateur comme:

Bienvenue utilisateur

Et vous avez terminé avec votre service Web Jersey avec Spring Boot

Consommer une API REST avec RestTemplate (GET)

Pour RestTemplate une API REST avec RestTemplate , créez un projet d'amorçage Spring avec initialzr d'amorçage Spring et assurez-vous que la dépendance Web est ajoutée:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Une fois votre projet configuré , créez un bean RestTemplate . Vous pouvez le faire dans la classe principale qui a déjà été générée ou dans une classe de configuration distincte (une classe annotée avec @Configuration ):

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

Après cela, créez une classe de domaine, similaire à la procédure à suivre pour créer un service REST .

public class User {
    private Long id;
    private String username;
    private String firstname;
    private String lastname;

    public Long getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

Dans votre client, indiquez le RestTemplate :

@Autowired
private RestTemplate restTemplate;

Pour consommer une API REST qui renvoie un seul utilisateur, vous pouvez désormais utiliser:

String url = "http://example.org/path/to/api";
User response = restTemplate.getForObject(url, User.class);

En utilisant une API REST qui renvoie une liste ou un tableau d'utilisateurs, vous disposez de deux options. Soit le consomme comme un tableau:

String url = "http://example.org/path/to/api";
User[] response = restTemplate.getForObject(url, User[].class);

Ou consommez-le en utilisant ParameterizedTypeReference :

String url = "http://example.org/path/to/api";
ResponseEntity<List<User>> response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>() {});
List<User> data = response.getBody();

Sachez que lorsque vous utilisez ParameterizedTypeReference , vous devrez utiliser la méthode RestTemplate.exchange() plus avancée et vous devrez en créer une sous-classe. Dans l'exemple ci-dessus, une classe anonyme est utilisée.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow