수색…


매개 변수

주석 기둥
@제어 장치 주석 된 클래스가 "컨트롤러"(웹 컨트롤러)임을 나타냅니다.
@RequestMapping 웹 요청을 특정 핸들러 클래스 (클래스와 함께 사용하는 경우) 및 / 또는 핸들러 메소드 (메소드와 함께 사용하는 경우)에 매핑하는 주석.
method = RequestMethod.GET HTTP 요청 메소드 유형
ResponseBody 메소드 반환 값이 웹 응답 본문에 바인딩되어야 함을 나타내는 주석
@RestController @Controller + ResponseBody
@ResponseEntity HttpStatus 상태 코드를 추가하는 HttpEntity의 확장, 우리는 반환 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. 정적 목록 사용자 변수를 정의하여 데이터베이스를 시뮬레이트하고 목록에 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 ]을 mvn clean install spring-boot:run 하고이 URL을 http://localhost:8080/api/users 라고 부릅니다 http://localhost:8080/api/users

  2. 우리는 함께 클래스를 주석을 달 수 있습니다 @RestController ,이 경우 우리는이 클래스의 모든 메소드에서위한 responseBody을 제거 할 수 있습니다, (@RestController = @Controller + ResponseBody) , 우리가 사용하는 경우 우리가 리턴 HTTP 코드를 제어 할 수있는 또 하나의 포인트 ResponseEntity , 우리는 이전의 동일한 기능을 구현할 것이지만 @RestControllerResponseEntity

@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 부트로 Rest 서비스 만들기

Jersey는 Rest Services를 생성하는 데 사용할 수있는 많은 프레임 워크 중 하나입니다.이 예제에서는 Jersey 및 Spring Boot를 사용하여 Rest Services를 만드는 방법을 보여줍니다.

1. 프로젝트 설정

STS를 사용하거나 Spring Initializr 페이지를 사용하여 새 프로젝트를 만들 수 있습니다. 프로젝트를 만드는 동안 다음 종속성을 포함시킵니다.

  1. 저지 (JAX-RS)
  2. 편물

2. 컨트롤러 만들기

Jersey 웹 서비스 용 컨트롤러를 만들어 보겠습니다.

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

@Path("/Welcome") 주석은이 컨트롤러가 URI 경로에 응답해야한다는 것을 프레임 워크에 나타냅니다. / Welcome

@QueryParam("user") 주석은 우리가 이름과 함께 하나 개의 쿼리 매개 변수를 기대 프레임 워크에 나타냅니다 user

3. 저어지 구성 배선

이제 Spring Boot로 Jersey Framework를 구성 해 보겠습니다. 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 주석을 달아주는 것이 좋습니다. 그렇지 않으면 모든 요청이 Jersey에 의해 처리되고 요청을 우회하여 스프링 컨트롤러가 처리하도록합니다.

4. 완료

응용 프로그램을 시작하고 다음과 같은 샘플 URL을 실행하십시오 (포트 8080에서 실행되도록 스프링 부트를 구성했다고 가정).

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

브라우저에 다음과 같은 메시지가 나타납니다.

환영 사용자

Spring Boot를 사용하여 Jersey 웹 서비스를 완성했습니다.

RestTemplate (GET)이있는 REST API 사용

RestTemplate 을 사용하여 REST API를 사용하려면 Spring 부트 initialzr을 사용하여 Spring 부트 프로젝트를 만들고 종속성이 추가되었는지 확인하십시오.

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

클라이언트에서 RestTemplate autowire하십시오.

@Autowired
private RestTemplate restTemplate;

단일 사용자를 반환하는 REST API를 사용하려면 다음을 사용할 수 있습니다.

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

목록 또는 사용자 배열을 반환하는 REST API를 사용하면 두 가지 옵션이 있습니다. 배열로 사용하십시오.

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