WebClient 란? API를 호출하기 위해 사용되는 Http Client 모듈 중 하나 왜 WebClient 가 필요한가? 현재 Java에서 가장 많이 사용하는 Http Client는 RestTemplate 입니다. 그런데 Spring 5.0 버전부터는 RestTemplate 은 유지 관리 모드로 변경되었습니다. Spring 에서는 RestTemplate 의 대안으로 WebClient 사용을 강력히 권고하고 있습니다. WebClient 는 논블로킹/블로킹 모두 지원합니다. 동작 원리 WebClient 의 동작 원리를 알려면 먼저, RestTemplate 의 동작 원리를 알아야 합니다. RestTemplate Multi-Thread, Blocking 요청 Thread Pool은 애플리케이션 구동 시에 ..
프로젝트를 진행하며 이미지 파일을 다룰 일들이 있었는데요 이번 포스팅에서는 많은 시행착오를 통해 제가 알게된 이미지 파일과 Json Data를 함께 전송하는 방법 2가지를 정리해보겠습니다. 1. 모든 값 Form-Data로 전송 제가 처음 시도해본 방법입니다. 위의 말 그대로 모든 값을 Form-Data로 전송하는 것입니다. Postman을 이용하여 보여드리겠습니다. 이때 이미지 파일을 보내는 Key값은 Text가 아닌 File로 변경해주셔야 합니다. 이제 Controller를 구현해보겠습니다. @PostMapping("/upload") public void post(@ModelAttribute PostRequestDto postRequestDto){ postService.post(postRequestD..
강의를 보며 Test코드를 작성하다가 에러가 떴다. 강사님은 개발 환경이 Junit4 사용중 이었고, 반면 나는 Junit5 이었다. (Spring Boot 2.2.x 부터는 Junit5이 기본설정) 그렇기에 test파일을 만들때 Junit4을 선택하고 gradle 설정을 Junit4에 맞춰 fix하였다. (Intellij fix 자동 기능 사용) (이 시점부터 문제가 시작된거 같다..) 문제를 해결하는 과정을 하나의 글로 정리해보았다. 1. Junit4, Junit5는 모듈이 다르기 때문에 import문이 다르다. @Test 어노테이션을 적고 import할때 두 개의 import문이 떴다. (Junit4 라이브러리도 갖고 있었기 때문) -> Junit4 import문 선택 (강의를 보고 코드를 작성하였..
MVC란? (Model View Controller) Model : 실제 정보의 흐름 - 데이터 처리 View : 정보를 View에 담아 사용자에게 html형태로 제공한다. - 페이지 생성 Controller : 요청을 받아 Model의 상태를 바꾸고 이를 View에 전달한다. - 요청받기 간단한 MVC Pattern을 작성해보자 1. Controller 작성 이전 포스팅에서 생성해 놓았던 TestController에 localhost:(포트번호)/name 을 호출하면 model에 key : name, value : "엄준식" 을 저장하는 코드 return 에는 name.html 파일을 생성할 것이니 name을 적어준다. 2. html 파일 작성 경로 : main/resources/templates 위의..
1. @RestController 이란? 한마디로 정리하자면 @Controller + @ResponseBody 결합된 어노테이션이다. 따라서 주용도는 객체 데이터를 반환하는 것이다. 2. @RestController을 이용하여 객체 전송하기 Member class를 생성하고, Getter, Setter 를 생성해준다. ExRestController class 위에 @RestController 어노테이션을 적어준다. 이제 파라미터 데이터 전달 방식으로 값을 받아 오겠다. 확인결과 json파일 방식으로 객체가 잘 반환된 것을 볼 수있다 !! 2-1. @RestController를 이용하여 Map 전송하기 Map 객체를 생성해주고 값을 넣어준다. 잘 전송되었다 !!
API를 만들기에 있어 2가지 요청 방식이있다. 1. 기존 방식인 @RequsetMapping을 사용하는 방식과 2. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping을 사용하는 방식 (스프링 4.3부터 등장) 1. @RequsetMapping 방식 @RequestMapping(value="경로" ,method=RequestMethod.GET) >> GET방식 @RequestMapping(value="경로" ,method=RequestMethod.GET) >> POST방식 2. @GetMapping, @PostMapping @GetMapping("경로") >> GET방식 @PostMapping("경로") >> POST방식 근데 여기서 우리는 의문을 가질 수..
@Controller 어노테이션을 썼을때 View가 아닌 Data를 반환해야 할때는 @Responsebody 어노테이션을 사용해야 한다. 확인해보면 return그대로 helloworld를 반환한다. 여기서 중요한것은 json 형식으로 반환이 가능하다는 것이다, 두가지 방식으로 가능한데 첫번째는 @RequestParam 어노테이션을 사용하는 방법 >> 프론트에서 받을 파라미터가 한개 일 때 두번째는 @RequestBody 어노테이션을 사용하는 방법 >> 받을 파라미터가 여러개인 객체 일 때 1. @RequestParam 방식 확인해보면 json형식으로 반환한 값을 확인할 수 있다. 확인할때는 /mapping값?파라미터이름=전달할파라미터 이 형식으로 적어주면 된다. 2. @RequestBody 방식 주의할 ..