본문 바로가기

컴퓨터공부/JSP

스프링 입문을 위한 자바 객체 지향의 원리와 이해 (2)[책리뷰 & Book review]

by Life & study 2024. 1. 26.
반응형

스프링 입문을 위한 자바 객체 지향의 원리와 이해 (2)

[책리뷰 & Book review]

 

ResponseEntity 객체로 받는 메서드입니다


RestTemplate은 스프링에서 제공하는 HTTP 클라이언트 라이브러리로, 웹 서비스에 HTTP 요청을 보내고 응답을 받는 기능을 담당합니다.

RestTemplate의 getForEntity() 메서드는 HTTP GET 요청을 보내고, 그에 대한 응답을 ResponseEntity 객체로 받는 메서드입니다. 이 ResponseEntity 객체는 HTTP 응답의 본문(content), 헤더(headers), 상태 코드(status code) 등을 포함하고 있습니다.

따라서, 클라이언트(여기서는 스프링 애플리케이션)가 특정 URL에 HTTP GET 요청을 보내면, 웹 서버는 이 요청을 처리하고 그 결과를 HTTP 응답으로 보냅니다. 이 응답은 RestTemplate에 의해 수신되고, ResponseEntity 객체로 변환됩니다.

이후 스프링 애플리케이션에서는 ResponseEntity의 getBody() 메서드를 통해 응답 본문을 추출하고 이를 사용할 수 있습니다. 이 과정을 통해 웹 서버가 보낸 응답 데이터를 스프링 애플리케이션에서 가져와 사용하는 것이 가능해집니다.



 

 CRM의 유형과 종류

 

 

 

 

 

 

RestTemplate 웹클라이언트 메서드에 대한 이해

 

 

RestTemplate은 Spring 프레임워크에서 제공하는 HTTP 통신을 위한 클래스입니다. 이 클래스에는 웹 서버와 통신하기 위한 다양한 메서드들이 포함되어 있습니다.

GET 요청 GET 요청은 웹 서버로부터 데이터를 읽어오는 데 사용됩니다.
java

RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject("http://example.com", String.class);


POST 요청 POST 요청은 웹 서버에 데이터를 전송하는 데 사용됩니다.
java

RestTemplate restTemplate = new RestTemplate();
MyObject myObject = new MyObject("data");
ResponseEntity<MyObject> response = restTemplate.postForEntity("http://example.com", myObject, MyObject.class);


PUT 요청 PUT 요청은 웹 서버에 있는 데이터를 갱신하는 데 사용됩니다.
java

RestTemplate restTemplate = new RestTemplate();
MyObject updatedObject = new MyObject("updatedData");
restTemplate.put("http://example.com/{id}", updatedObject, "123");


DELETE 요청 DELETE 요청은 웹 서버에 있는 데이터를 삭제하는 데 사용됩니다.
java

RestTemplate restTemplate = new RestTemplate();
restTemplate.delete("http://example.com/{id}", "123");


HEAD 요청 HEAD 요청은 GET 요청과 비슷하나, 리소스의 본문을 반환하지 않고 헤더 정보만을 반환합니다.
java

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = restTemplate.headForHeaders("http://example.com");


OPTIONS 요청 OPTIONS 요청은 웹 서버가 지원하는 HTTP 메서드 정보를 확인하는 데 사용됩니다.
java

RestTemplate restTemplate = new RestTemplate();
Set<HttpMethod> methods = restTemplate.optionsForAllow("http://example.com");


RestTemplate 클래스는 동기식 방식으로 동작하며, 이는 클라이언트가 요청을 보낸 후 응답을 받을 때까지 대기한다는 것을 의미합니다. 따라서, 웹 서버와의 통신 시간이 클라이언트의 전체 처리 시간에 영향을 줍니다.

 

 

 

 

 

 

 

 

 

Webclient에 대한 Spring에서의 동작원리

 

웹 페이지에서 "HelloWorld"라는 URL을 클릭했을 때 "Hello Men"이라는 메시지를 반환하는 웹서비스를 개발하려면, 먼저 Spring Boot 웹 애플리케이션을 생성하고 해당 URL에 대한 컨트롤러를 작성해야 합니다.

Spring Boot 애플리케이션 생성
먼저, Spring Boot 애플리케이션을 생성합니다. 이를 위해서는 Spring Initializr를 사용하거나, 직접 프로젝트를 생성할 수 있습니다.
컨트롤러 생성
다음으로, HelloWorld라는 URL에 대한 요청을 처리할 컨트롤러를 생성합니다. 컨트롤러는 클라이언트의 요청을 처리하고 응답을 반환하는 역할을 합니다.
java

@RestController
public class HelloWorldController {
    @GetMapping("/HelloWorld")
    public String helloWorld() {
        return "Hello Men";
    }
}


위의 코드는 "/HelloWorld"라는 URL에 대한 GET 요청을 처리하고, "Hello Men"이라는 문자열을 반환합니다.

WebClient 사용 이제 WebClient를 사용하여 이 URL에 요청을 보낼 수 있습니다.
java

WebClient webClient = WebClient.create();
Mono<String> result = webClient.get()
    .uri("http://localhost:8080/HelloWorld")
    .retrieve()
    .bodyToMono(String.class);

result.subscribe(System.out::println);


위의 WebClient 코드는 "http://localhost:8080/HelloWorld"라는 URL에 GET 요청을 보내고, 반환된 문자열을 콘솔에 출력합니다. 이 코드는 비동기 방식으로 동작하므로, 요청을 보낸 후 즉시 다음 코드를 실행하고, 응답이 도착하면 subscribe에 지정된 코드를 실행합니다.

다음 텍스트 그림은 이 과정을 나타냅니다.

[웹 브라우저]  --(1) GET /HelloWorld 요청-->  [Spring Boot 애플리케이션]
[Spring Boot 애플리케이션]  --(2) "Hello Men" 응답-->  [웹 브라우저]

[WebClient]  --(3) GET /HelloWorld 요청-->  [Spring Boot 애플리케이션]
[Spring Boot 애플리케이션]  --(4) "Hello Men" 응답-->  [WebClient]


요청:

웹 브라우저가 "/HelloWorld" URL을 요청합니다.
WebClient가 동일한 URL을 요청합니다.
응답:
2. Spring Boot 애플리케이션은 "Hello Men"이라는 메시지를 웹 브라우저에 응답합니다.
4. Spring Boot 애플리케이션은 "Hello Men"이라는 메시지를 WebClient에 응답합니다.




 

 

 

 

 

WebClient는 Spring WebFlux의 일부로, 비동기, 논블로킹 웹 요청을 수행하는 데 사용되는 클래스는 무엇인가?

 

WebClient는 Spring WebFlux의 일부로, 비동기, 논블로킹 웹 요청을 수행하는 데 사용되는 클래스입니다. WebClient는 RestTemplate의 대체제로 소개되었으며, RESTful 서비스를 호출할 때 사용됩니다.

GET 요청 GET 요청은 웹 서버로부터 데이터를 읽어오는 데 사용됩니다.
java

WebClient webClient = WebClient.create();
Mono<String> result = webClient.get()
    .uri("http://example.com")
    .retrieve()
    .bodyToMono(String.class);


POST 요청 POST 요청은 웹 서버에 데이터를 전송하는 데 사용됩니다.
java

WebClient webClient = WebClient.create();
MyObject myObject = new MyObject("data");
Mono<MyObject> response = webClient.post()
    .uri("http://example.com")
    .bodyValue(myObject)
    .retrieve()
    .bodyToMono(MyObject.class);


PUT 요청 PUT 요청은 웹 서버에 있는 데이터를 갱신하는 데 사용됩니다.
java

WebClient webClient = WebClient.create();
MyObject updatedObject = new MyObject("updatedData");
Mono<Void> updatedResult = webClient.put()
    .uri("http://example.com/{id}", "123")
    .bodyValue(updatedObject)
    .retrieve()
    .bodyToMono(Void.class);


DELETE 요청 DELETE 요청은 웹 서버에 있는 데이터를 삭제하는 데 사용됩니다.
java

WebClient webClient = WebClient.create();
Mono<Void> deleteResult = webClient.delete()
    .uri("http://example.com/{id}", "123")
    .retrieve()
    .bodyToMono(Void.class);


위의 WebClient 코드는 모두 비동기 방식으로 동작하며, Mono 형식을 반환합니다. Mono는 0 또는 1개의 결과를 포함하는 Reactor 프로젝트의 일부인 퍼블리셔입니다.

이러한 비동기 처리 방식은 웹 요청을 보낸 후 응답을 기다리는 동안 다른 작업을 계속할 수 있으므로, 전체 처리 시간에 미치는 영향을 줄일 수 있습니다. 이는 특히 동시에 여러 웹 요청을 보내야 할 때 유용합니다.

 

 

 

 

 

 

 

 

#개발자취업 #개발자기초 #개발자 #개발자분야 #개발자분류 #개발자종류 #it개발자 #서버개발자 #개발자성장 #신입개발자 #ios개발자 #개발자노트북 #개발자 되는 법 #개발 #앱개발 #웹개발 #개발분야 #it개발 #개발공부 #코딩상식 #개발공부 #개발초보

 

#개발자취업 #개발자면접 #개발자채용 #백엔드개발자 #백엔드개발자 #백엔드개발자취업 #백엔드개발 #프런트엔드개발자 #개발자상담 #백엔드 #개발자 #앱개발자 #웹개발자 #개발자팁 #앱개발자 #백엔드취업 #백엔드공부 #백엔드강의 #백엔드독학

 

#전산직면접 #면접 #면접팁 #면접관 #공공기관전산직면접 #공사면접 #면접질문 #면접할 말 #면접준비 #면접준비 #면접답변 #면접질문 #면접기출 #전화면접 #면접복장 #면접답변 #면접꿀팁 #모의면접 #면접후기 #롯데면접 #면접후기 #임원면접 #최종면접 #면접꿀팁

 

 

 

 

 

반응형

댓글