Ricerca…


Parametri

Annotazione Colonna
@Controller Indica che una classe annotata è un "Controller" (controller web).
@RequestMapping Annotazione per mappare le richieste Web su classi di gestori specifici (se usato con classe) e / o metodi handler (se usato con metodi).
method = RequestMethod.GET Tipo di metodi di richiesta HTTP
responseBody L'annotazione che indica un valore di ritorno del metodo deve essere associato al corpo della risposta Web
@RestController @Controller + ResponseBody
@ResponseEntity Estensione di HttpEntity che aggiunge un codice di stato HttpStatus, possiamo controllare il codice http di ritorno

Creazione di un servizio REST

  1. Creare un progetto usando STS (Spring Starter Project) o Spring Initializr (all'indirizzo https://start.spring.io ).
  2. Aggiungi una dipendenza Web nel tuo pom.xml:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

oppure digitare web nella casella di ricerca Search for dependencies , aggiungere dipendenza Web e scaricare il progetto zippato.

  1. Creare una classe di dominio (es. Utente)
 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. Crea una classe UserController e aggiungi le annotazioni @Controller , @RequestMapping
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. Definisci la variabile degli utenti dell'elenco statico per simulare il database e aggiungere 2 utenti all'elenco
    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. Crea un nuovo metodo per restituire tutti gli utenti nell'elenco statico (getAllUsers)
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. Esegui l'applicazione [da mvn clean install spring-boot:run ] e chiama questo URL http://localhost:8080/api/users

  2. Possiamo annotare la classe con @RestController , e in questo caso possiamo rimuovere ResponseBody da tutti i metodi in questa classe, (@RestController = @Controller + ResponseBody) , un altro punto possiamo controllare il codice http di ritorno se usiamo ResponseEntity , implementeremo le stesse funzioni precedenti ma @RestController e 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);
       }
    }
}

ora prova a eseguire l'applicazione e chiama questo URL http: // localhost: 8080 / api2 / users

Creazione di un servizio di riposo con JERSEY e Spring Boot

Jersey è uno dei molti framework disponibili per creare Rest Services. Questo esempio ti mostrerà come creare Rest Services usando Jersey e Spring Boot

1. Setup del progetto

Puoi creare un nuovo progetto usando STS o usando la pagina Spring Initializr . Durante la creazione di un progetto, includere le seguenti dipendenze:

  1. Maglia (JAX-RS)
  2. web

2. Creazione di un controller

Cerchiamo di creare un controller per il nostro servizio Web Jersey

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

@Path("/Welcome") annotazione @Path("/Welcome") indica al framework che questo controller deve rispondere al percorso / Welcome dell'URI

@QueryParam("user") indica al framework che ci aspettiamo un parametro di query con il nome user

3. Configurazioni della maglia del cablaggio

Ora configuriamo Jersey Framework con Spring Boot: crea una classe, piuttosto un componente spring che estende 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") indica al framework che solo le richieste dirette al percorso /MyRestService sono destinate a essere gestite dal framework jersey, altre richieste dovrebbero comunque continuare a essere gestite dal framework di primavera.

È una buona idea annotare la classe di configurazione con @ApplicationPath , altrimenti tutte le richieste saranno gestite da Jersey e non saremo in grado di aggirarlo e lasciare che un controller a molla lo gestisca se necessario.

4.Done

Avvia l'applicazione e attiva un URL di esempio come (Supponendo che tu abbia configurato l'avvio a molla per l'esecuzione sulla porta 8080):

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

Dovresti vedere un messaggio nel tuo browser come:

Benvenuto Utente

E hai finito con il tuo servizio Web Jersey con Spring Boot

Consumare un'API REST con RestTemplate (GET)

Per utilizzare un'API REST con RestTemplate , creare un progetto di avvio Spring con initialzr di avvio Spring e assicurarsi che venga aggiunta la dipendenza Web :

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

Una volta impostato il progetto , crea un bean RestTemplate . Puoi farlo all'interno della classe principale che è già stata generata o all'interno di una classe di configurazione separata (una classe annotata con @Configuration ):

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

Successivamente, crea una classe di dominio, simile a come dovresti fare quando crei un servizio 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;
    }
}

Nel tuo client, autowire il RestTemplate :

@Autowired
private RestTemplate restTemplate;

Per consumare un'API REST che restituisce un singolo utente, ora puoi utilizzare:

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

Utilizzando un'API REST che restituisce un elenco o un array di utenti, hai due opzioni. Consumalo come un array:

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

Oppure consumalo usando 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();

Tieni presente che quando si utilizza ParameterizedTypeReference , sarà necessario utilizzare il metodo RestTemplate.exchange() più avanzato e sarà necessario crearne una sottoclasse. Nell'esempio sopra, viene utilizzata una classe anonima.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow