Suche…


Parameter

Anmerkung Säule
@Regler Gibt an, dass eine kommentierte Klasse ein "Controller" (Webcontroller) ist.
@RequestMapping Anmerkung zum Mapping von Webanforderungen auf bestimmte Handler-Klassen (wenn wir mit class verwendet wurden) und / oder Handler-Methoden (wenn wir mit Methoden verwendet wurden)
method = RequestMethod.GET Art der HTTP-Anforderungsmethoden
ResponseBody Anmerkungen, die angeben, dass ein Methodenrückgabewert angezeigt wird, sollten an den Webantworthauptteil gebunden werden
@RestController @Controller + ResponseBody
@ResponseEntity Die Erweiterung von HttpEntity, die einen HttpStatus-Statuscode hinzufügt, kann den zurückgegebenen http-Code steuern

Erstellen eines REST-Service

  1. Erstellen Sie ein Projekt mit STS (Spring Starter Project) oder Spring Initializr (unter https://start.spring.io ).
  2. Fügen Sie eine Webabhängigkeit in Ihrer pom.xml hinzu:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

oder geben Sie web in das Suchfeld Nach Search for dependencies suchen ein, fügen Sie eine Webabhängigkeit hinzu und laden Sie ein gezipptes Projekt herunter.

  1. Erstellen Sie eine Domänenklasse (z. B. Benutzer)
 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. Erstellen Sie die UserController-Klasse und fügen Sie @Controller , @RequestMapping Anmerkungen hinzu
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. Definieren Sie die statische Liste Benutzervariable, um die Datenbank zu simulieren, und fügen Sie der Liste zwei Benutzer hinzu
    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. Neue Methode erstellen, um alle Benutzer in der statischen Liste zurückzugeben (getAllUsers)
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. Führen Sie die Anwendung [von mvn clean install spring-boot:run ] aus und rufen Sie diese URL http://localhost:8080/api/users

  2. Wir können die Klasse mit Anmerkungen versehen @RestController , und in diesem Fall können wir die Response von allen Methoden in dieser Klasse entfernen (@RestController = @Controller + ResponseBody) , ein weiterer Punkt wir die Rückkehr http Code steuern können , wenn wir verwenden ResponseEntity , Wir werden dieselben vorherigen Funktionen implementieren, jedoch @RestController und 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);
       }
    }
}

Versuchen Sie jetzt, die Anwendung auszuführen, und rufen Sie diese URL http: // localhost: 8080 / api2 / users auf

Erstellen eines Ruhedienstes mit JERSEY und Spring Boot

Jersey ist eines der vielen verfügbaren Frameworks zum Erstellen von Rest Services. In diesem Beispiel wird beschrieben, wie Rest Services mit Jersey und Spring Boot erstellt werden

1.Projekt-Setup

Sie können ein neues Projekt mit STS oder über die Seite Spring Initializr erstellen. Berücksichtigen Sie beim Erstellen eines Projekts die folgenden Abhängigkeiten:

  1. Trikot (JAX-RS)
  2. Netz

2. Controller erstellen

Lassen Sie uns einen Controller für unseren Jersey Web Service erstellen

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

@Path("/Welcome") Annotation @Path("/Welcome") gibt dem Framework an, dass dieser Controller auf den URI-Pfad / Welcome antworten soll

@QueryParam("user") Anmerkung zeigt den Rahmen , dass wir einen Abfrageparameter mit dem Namen erwarten user

3.Wiring Jersey-Konfigurationen

Lassen Sie uns nun Jersey Framework mit Spring Boot konfigurieren: Erstellen Sie eine Klasse, eher eine org.glassfish.jersey.server.ResourceConfig die 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") gibt dem Framework an, dass nur Anforderungen, die an den Pfad /MyRestService sind, vom Jersey-Framework verarbeitet werden sollen, andere Anforderungen sollten weiterhin vom Spring-Framework verarbeitet werden.

Es ist eine gute Idee, die Konfigurationsklasse mit @ApplicationPath zu kommentieren, andernfalls werden alle Anforderungen von Jersey bearbeitet, und wir können sie nicht umgehen und können bei Bedarf einen Feder-Controller verwenden.

4.Done

Starten Sie die Anwendung und lösen Sie eine Beispiel-URL aus (Angenommen, Sie haben Spring Boot für die Ausführung auf Port 8080 konfiguriert):

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

Sie sollten eine Nachricht in Ihrem Browser sehen:

Willkommener Benutzer

Und Sie sind fertig mit Ihrem Jersey-Webdienst mit Spring Boot

REST-API mit RestTemplate (GET) verwenden

Um einen REST - API mit verbrauchen RestTemplate , ein Frühlings - Boot - Projekt mit dem Spring - Boot initialzr zu schaffen und sicherzustellen , dass die Web - Abhängigkeit angefügt:

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

Wenn Sie Ihr Projekt eingerichtet haben , erstellen Sie eine RestTemplate Bean. Dies kann in der bereits generierten Hauptklasse oder in einer separaten Konfigurationsklasse (einer mit @Configuration annotierten @Configuration ) erfolgen:

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

Erstellen Sie anschließend eine Domänenklasse, ähnlich wie Sie beim Erstellen eines REST-Diensts vorgehen müssen .

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;
    }
}

Aktivieren RestTemplate in Ihrem Client die RestTemplate RestTemplate :

@Autowired
private RestTemplate restTemplate;

Um eine REST-API zu verwenden, die einen einzelnen Benutzer zurückgibt, können Sie jetzt Folgendes verwenden:

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

Wenn Sie eine REST-API verwenden, die eine Liste oder ein Array von Benutzern zurückgibt, haben Sie zwei Möglichkeiten. Entweder verbrauchen Sie es als Array:

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

Oder verbrauchen Sie es mit der 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();

RestTemplate.exchange() Sie, dass Sie bei der Verwendung von ParameterizedTypeReference die erweiterte RestTemplate.exchange() Methode verwenden und eine Unterklasse davon erstellen müssen. Im obigen Beispiel wird eine anonyme Klasse verwendet.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow