프레임워크/Spring19 [Spring] @RequestBody란 무엇인가? 사용법은? 이전에 Header와 Parameter를 이용하여 데이터를 가져오는 내용을 정리했다. 위와 같은 방식은 GET이나 DELETE와 같이 Body가 없을때 사용하는 방식이다.(혹은 인증이나) 그렇지만 위와 같은 방식은 보안이 취약해지거나 데이터가 많아지면 문제가 발생한다. 그래서 생성과 수정의 역할을 담당하는 POST와 PUT에는 Body를 붙여 사용할 수 있다. Body에 있는 데이터를 가져오는 방법은 아래와 같다. @PostMapping("/users/body") public ResponseEntity requestBody(@RequestBody Map body) { User newUser = new User(1L, body.get("name"), body.get("email")); return Resp.. 프레임워크/Spring 2021. 4. 24. [Spring] Header에서 데이터 가져오기 @RequestHeader 우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 Header를 이용하여 데이터를 가져오는 방법을 정리했다. @GetMapping(path = "/message", headers = "HEADER") public ResponseEntity messageForHeader(@RequestHeader HttpHeaders header) { return ResponseEntity.ok().body(header.getFirst("HEADER")); } Parameters에서의 params와 비슷하게 여기서는 headers를 추가하여 필요한 내용을 강제할 수 있다. 받을때 사용하는 애너테이션 또한 @RequestHeader를 이용하여 header를 받아 데이터를 꺼내서 사용한다. 다른 방식으로 아.. 프레임워크/Spring 2021. 4. 23. [Spring] Parameter에서 데이터 가져오기 @RequestParam 우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 Parameter를 이용하여 데이터를 가져오는 방법을 정리했다. Parameter로 데이터를 보내는 방법은 URL 뒤에 ?name=mungto 이러한 방식이다. Spring에서 처리하는 방법은 사용방법은 아래와 같다. @GetMapping(path = "/message") public ResponseEntity messageForParam(@RequestParam("name") String name) { ... } 변수명과 parameter이름이 같다면 괄호안에 내용은 생략이 가능하다. @GetMapping(path = "/message") public ResponseEntity messageForParam(@RequestParam St.. 프레임워크/Spring 2021. 4. 22. [Spring] consumes와 produces의 차이 Mapping을 할때 우리는 받고싶은 데이터를 강제를 함으로써 오류상황을 줄일 수 있다. 이걸 위해 사용하는 것 중 하나가 Media Types이다. 들어오는 데이터와 나가는 데이터를 정하여 처리를 할 수 있다. consumes는 들어오는 데이터 타입을 정의할때 이용한다. 예를 들어서 내가 json타입을 받고 싶다면 아래와 같이 처리가 가능하다. @PostMapping(path = "/pets", consumes = MediaType.APPLICATION_JSON_VALUE) public void addPet(@RequestBody Pet pet) { // ... } 이렇게 처리를 하게되면 해당 uri를 호출하는 쪽에서는 헤더에 보내는 데이터가 json이라는 것을 명시해야 한다. Content-Type:.. 프레임워크/Spring 2021. 4. 21. [Spring] URI patterns는 무엇인가? Spring으로 개발을 하다보면 정확하게 딱 떨어지는 URI를 만들지 못할때가 있다. 이런 내용을 물론 RequestParam, Body에 데이터를 넣어서 처리할 수도 있지만 이걸 쓰기 애매할때도 있다. (중간에 여러가지 변경되는 내용이 있다거나 메서드상 GET인데 Body를 써야해서 Post와 같은것을 사용해야 한다거나... ) 이럴때는 보통 URL 패턴을 이용하게 된다. {PathValiable} @GetMapping("/owners/{ownerId}/pets/{petId}") public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) { // ... } @GetMapping에서 {} 안에 있는 것들이 유동적으로 변경이 가능한 P.. 프레임워크/Spring 2021. 4. 20. [Spring] @RequestMapping이란? 우리는 특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의를 한다. 이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이 @RequestMapping이다. @RequestMapping에서 가장 많이사용하는 부분은 value와 method이다. (더 많지만 여기서는 여기까지만) value는 요청받을 url을 설정하게 된다. method는 어떤 요청으로 받을지 정의하게 된다.(GET, POST, PUT, DELETE 등) @RequestMapping(value = "/hello", method = RequestMethod.GET) 예시를 간단하게 들어보면 이런식으로 가능하다. 그런데 만약 /hello라는 내용으로 GET, POST, PUT, DELETE를 만들려면 어떻.. 프레임워크/Spring 2021. 4. 8. [Spring] @Controller와 @RestController의 차이 초기에는 Spring이 프론트와 백엔드의 역할을 같이하고 있었다. 그래서 @Controller는 화면에 보여주는 View를 반환하는 기능을 가지고 있었다. 그렇지만 Data만 반환을 해야하는 경우가 점차 많이 생기게 되었다. (RestApi 서버인경우, 화면의 특정 부분만 렌더링 할 경우 등이 있다.) 이럴때는 데이터를 반환하기 위해 @ResponseBody를 이용하여 Json 형태로 데이터를 반환한다. 그런데 계속해서 @ResponseBody를 붙이는 것에 대한 불편함이 생겼고 이에따라 이걸 합친 기능이 만들어지게 된다. 이것이 바로 @RestController이다.(Spring 4버전 이후로 출시되었다고 한다.) 즉 @RestController = @Controller + @ResponseBody가 .. 프레임워크/Spring 2021. 4. 7. 이전 1 2 다음 💲 광고입니다.