Поиск…


параметры

аннотирование колонка
@Controller Указывает, что аннотированный класс является «контроллером» (веб-контроллером).
@RequestMapping Аннотации для сопоставления веб-запросов на определенные классы обработчиков (если мы использовали с классом) и / или методы обработчика (если мы использовали методы).
метод = RequestMethod.GET Тип методов HTTP-запроса
ResponseBody Аннотации, указывающие возвращаемое значение метода, должны быть привязаны к телу веб-ответа
@RestController @Controller + ResponseBody
@ResponseEntity Расширение HttpEntity, которое добавляет код состояния HttpStatus, мы можем контролировать код HTTP возврата

Создание REST-сервиса

  1. Создайте проект, используя STS (Spring Starter Project) или Spring Initializr (на странице https://start.spring.io ).
  2. Добавьте веб-зависимость в свой pom.xml:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

или введите веб - в Search for dependencies окна поиска, добавить веб - зависимость и скачать архивный проект.

  1. Создание класса домена (т.е. пользователя)
 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. Создайте класс UserController и добавьте аннотации @Controller , @RequestMapping
    @Controller
    @RequestMapping(value = "api")
    public class UserController {
    }
  1. Определите статическую переменную List List для имитации базы данных и добавьте 2 пользователей в список
    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. Создайте новый метод для возврата всех пользователей в статический список (getAllUsers)
    @RequestMapping(value = "users", method = RequestMethod.GET)
    public @ResponseBody List<User> getAllUsers() {
         return users;
    }
  1. Запустите приложение [по mvn clean install spring-boot:run ] и вызовите этот URL http://localhost:8080/api/users

  2. Мы можем аннотировать класс с помощью @RestController , и в этом случае мы можем удалить ResponseBody из всех методов этого класса, (@RestController = @Controller + ResponseBody) , еще одна точка, с которой мы можем управлять обратным кодом http, если мы используем ResponseEntity , мы будем выполнять те же предыдущие функции, но используя @RestController и 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);
       }
    }
}

теперь попробуйте запустить приложение и вызвать этот URL http: // localhost: 8080 / api2 / users

Создание службы отдыха с помощью JERSEY и Spring Boot

Джерси - одна из многих рамок, доступных для создания служб отдыха. Этот пример покажет вам, как создавать службы отдыха с использованием Jersey и Spring Boot

1.Проект установки

Вы можете создать новый проект с использованием STS или с помощью страницы Spring Initializr . При создании проекта включите следующие зависимости:

  1. Джерси (JAX-RS)
  2. Web

2.Создание контроллера

Давайте создадим контроллер для веб-службы Jersey

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

@Path("/Welcome") аннотация указывает на структуру, в которой этот контроллер должен отвечать на путь URI / приветствие

@QueryParam("user") указывает на фреймворк, который мы ожидаем от одного параметра запроса с именем user

3.Wiring Jersey Конфигурации

Давайте теперь настроим Jersey Framework с Spring Boot: создаем класс, а скорее весенний компонент, который расширяет 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") указывает на фреймворк, в котором только запросы, направленные на путь /MyRestService , должны обрабатываться каркасом джерси, другие запросы должны по-прежнему обрабатываться весной.

Это хорошая идея, чтобы аннотировать класс конфигурации с @ApplicationPath , иначе все запросы будут обработаны Джерси, и мы не сможем обойти его, и пусть контроллер пружины обработает его, если потребуется.

4.Done

Запустите приложение и запустите пример URL-адреса (предположим, что вы настроили загрузку весны на порт 8080):

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

В вашем браузере должно появиться сообщение:

Приветственный пользователь

И вы закончили с вашим веб-сервисом Jersey с Spring Boot

Использование API REST с помощью RestTemplate (GET)

Чтобы использовать REST API с помощью RestTemplate , создайте проект загрузки Spring с начальным загрузчиком Spring и убедитесь, что добавлена ​​зависимость Web :

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

После того, как вы создали свой проект , создайте компонент RestTemplate . Вы можете сделать это в основном классе, который уже был сгенерирован, или в отдельном классе конфигурации (класс, аннотированный с помощью @Configuration ):

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

После этого создайте класс домена, аналогичный тому, как вы должны делать при создании службы 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;
    }
}

В вашем клиенте, autwire RestTemplate :

@Autowired
private RestTemplate restTemplate;

Чтобы использовать REST API, который возвращает одного пользователя, вы можете теперь использовать:

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

Используя API REST, который возвращает список или массив пользователей, у вас есть два варианта. Или употребляйте его как массив:

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

Или используйте его с помощью 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();

Помните, что при использовании ParameterizedTypeReference вам придется использовать более продвинутый RestTemplate.exchange() и вам придется создать его подкласс. В приведенном выше примере используется анонимный класс.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow