Sök…


parametrar

Anteckning Kolumn
@Kontrollant Indikerar att en kommenterad klass är en "Controller" (webbkontroller).
@RequestMapping Kommentar för att kartlägga webbförfrågningar på specifika hanterarklasser (om vi använde med klass) och / eller hanteringsmetoder (om vi använde med metoder).
metod = RequestMethod.GET Typ av HTTP-förfrågningsmetoder
ResponseBody Annotering som indikerar ett metodåterföringsvärde bör vara bundet till webbsvarskroppen
@RestController @Controller + ResponseBody
@ResponseEntity Förlängning av HttpEntity som lägger till en HttpStatus-statuskod, vi kan kontrollera returen http-kod

Skapa en REST-tjänst

  1. Skapa projekt med STS (Spring Starter Project) eller Spring Initializr (på https://start.spring.io ).
  2. Lägg till en webbberoende i din pom.xml:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

eller skriv webben i sökrutan Search for dependencies , lägg till webbberoende och ladda ner zippat projekt.

  1. Skapa en domänklass (dvs. användare)
 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. Skapa UserController-klass och lägg till @Controller , @RequestMapping kommentarer
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. Definiera variabel för statisk lista för att simulera databasen och lägg till 2 användare i listan
    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. Skapa en ny metod för att returnera alla användare i statisk lista (getAllUsers)
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. Kör applikationen [av mvn clean install spring-boot:run ] och ring denna URL http://localhost:8080/api/users

  2. Vi kan kommentera klassen med @RestController , och i det här fallet kan vi ta bort ResponseBody från alla metoder i den här klassen, (@RestController = @Controller + ResponseBody) , en poäng till som vi kan kontrollera returkoden http om vi använder ResponseEntity , Vi kommer att implementera samma tidigare funktioner men med @RestController och 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);
       }
    }
}

försök nu att köra applikationen och ring den här webbadressen http: // localhost: 8080 / api2 / användare

Skapa en vilotjänst med JERSEY och Spring Boot

Jersey är ett av de många ramar som finns tillgängliga för att skapa Rest Services. Detta exempel visar hur du skapar Rest Services med Jersey och Spring Boot

1.Projektinställning

Du kan skapa ett nytt projekt med STS eller genom att använda våren Initializr- sidan. När du skapar ett projekt, inkludera följande beroenden:

  1. Jersey (JAX-RS)
  2. webb

2. Skapa en styrenhet

Låt oss skapa en controller för vår Jersey Web Service

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

@Path("/Welcome") -anteckningen indikerar för ramverket att denna controller ska svara på URI-sökvägen / Welcome

@QueryParam("user") kommentar indikerar för ramverket att vi förväntar oss en frågeparameter med namnet user

3. Kabeldragningskonfigurationer

Låt oss nu konfigurera Jersey Framework med Spring Boot: Skapa en klass, snarare en fjäderkomponent som utvidgar 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") indikerar för ramverket att endast förfrågningar riktade till sökvägen /MyRestService är avsedda att hanteras av jersey-ramverket, andra förfrågningar bör fortfarande fortsättas hanteras av vårramen.

Det är en bra idé att kommentera konfigurationsklassen med @ApplicationPath , annars kommer alla förfrågningar att hanteras av Jersey och vi kan inte kringgå den och låta en fjäderkontroll hantera den vid behov.

4.Done

Starta applikationen och avfyra ett exempel på en URL (förutsatt att du har konfigurerat vårstart för att köras på port 8080):

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

Du bör se ett meddelande i din webbläsare som:

Välkommen användare

Och du är klar med din Jersey Web Service med Spring Boot

Konsumerar ett REST-API med RestTemplate (GET)

Att konsumera en REST API med RestTemplate , skapa en Spring boot projekt med våren boot initialzr och se till att webb beroendet läggas till:

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

När du har konfigurerat ditt projekt skapar du en RestTemplate böna. Du kan göra detta inom huvudklassen som redan har genererats, eller inom en separat konfigurationsklass (en klass som är antecknad med @Configuration ):

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

Skapa sedan en domänklass , liknande hur du ska göra när du skapar en REST-tjänst .

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

I din klient, autowire RestTemplate :

@Autowired
private RestTemplate restTemplate;

För att konsumera ett REST-API som returnerar en enda användare kan du nu använda:

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

När du konsumerar ett REST-API som returnerar en lista eller ett antal användare, har du två alternativ. Antingen konsumerar det som en matris:

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

Eller konsumera det med hjälp av 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();

Tänk på att när du använder ParameterizedTypeReference måste du använda den mer avancerade RestTemplate.exchange() och du måste skapa en underklass av den. I exemplet ovan används en anonym klass.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow