목록전체 글 (34)
참새의 이야기
스프링 MVC Response HTTP 응답 - ResponseEntity 강의를 들으면서 가장 생소했던 부분이었다. 응답할 내용을 ResponseEntity에 담아서 반환한다. 이는 HTTP 메시지 컨버터를 통해서 JSON 형식으로 변환되어 반환된다. @GetMapping("/response-body-json-v1") public ResponseEntity responseBodyJsonV1() { HelloData helloData = new HelloData(); helloData.setUsername("userA"); helloData.setAge(20); return new ResponseEntity(helloData, HttpStatus.OK); } @ResponseStatus(HttpStatu..
HTTP 요청 - 기본, 헤더 조회 @RequestHeader MultiValueMap 헤더에 담긴 모든 정보를 Map으로 받을 수 있다. MultiValueMap을 사용하면 하나의 key에 복수의 value를 받을 수 있다는 장점이 있다. @RequestHeader(”host”) “host"라는 특정 헤더의 value를 받을 수 있다. 해당 값의 필수 여부를 required 속성으로 설정할 수 있고, null 값인 경우를 방지하기 위해 defaultValue를 설정할 수 있다. @CookieValue 위에서는 특정 헤더의 값을 받아왔다면, 이번에는 쿠키를 받아올 수 있다. 이 역시 required와 defaultValue를 설정할 수 있다. HTTP 요청 개요 클라이언트가 서버에게 데이터를 요청하는 방..
Slf4j를 사용한 logging 당근마켓 프로젝트를 할 때는 내가 구현한 내용이 나의 의도대로 실행되는지 확인하기 위해 콘솔에 System.out.println()으로 하나하나 출력했다. 실무에서는 이런 출력보다는 로그를 활용하기 때문에 간단한 사용법을 알아보려고 한다. 로깅 라이브러리 LogBack, Log4J, Log4J2와 같이 다양한 로깅 라이브러리가 존재한다. 이들을 통합한 인터페이스가 존재하는데 이것이 바로 Slf4j이다. 다시 말해, Slf4j라는 인터페이스의 구현체로 LogBack, Log4J, Log4J2 등이 존재하는 것이다. 어떤 구현체를 사용할 것인지 직접 설정해줄 수도 있지만, @Slf4j 어노테이션을 사용하면 스프링 부트는 알아서 LogBack을 구현체로 설정해 준다. 로깅 레..
스프링 MVC 활용 스프링 MVC에서 실제로 활용하는 FrontController를 DispatcherServlet이라고 부른다. 이미 많이 사용해 왔던 것들이지만 MVC 구조를 위해 제공하는 에노테이션을 알아보고 정리해보려 한다. @RequestMapping 이 에노테이션을 이용하여 메서드나 컨트롤러를 url과 매핑할 수 있다. 클래스와 메서드 모두에 붙어있는 경우에는 두 경로를 조합하여 하나의 경로를 생성해 준다. 예를 들어 “/springmvc/v1/members/save”와 “/springmvc/v1/members/new”를 같은 컨트롤러에서 처리한다고 하자. 그렇다면 “/springmvc/v1/members”까지는 중복이기 때문에 컨트롤러에는 @RequestMapping(“/springmvc/v..
MVC 프레임워크의 구성 Front Controller 개발을 하다 보면, 여러 클라이언트의 요청에 공통적인 처리가 필요한 경우가 많다. 공통적인 처리를 각각의 controller에서 따로 한다면 코드의 중복이 생겨버린다. 깜빡하는 순간 서비스의 장애로 이어질 수도 있다. 만약 공통적인 처리를 담당하는 컨트롤러가 있다면 개발의 복잡성을 덜어낼 수 있을 것이다. 이를 FrontController라고 부른다. FrontController는 모든 요청을 쓸어 담아 공통적으로 이루어져야 하는 로직을 수행하고 각각의 컨트롤러에게 다음 로직을 수행하도록 넘긴다. FrontController가 요청이 들어갈 수 있는 단 하나의 입구이고 적절한 컨트롤러를 찾아서 호출해 주기 때문에 다른 컨트롤러들은 servlet을 사..
웹 서버와 웹 애플리케이션 서버의 차이 지금껏 서버라고 하면 모두 같은 서버인 줄 알았다. 스프링 MVC 패턴에 대한 공부를 하면서 웹 서버의 작동 방식에 대한 이해를 높일 수 있었다. 웹 서버 웹 서버는 정적인 resource를 제공한다. 정적인 resource라고 하면 HTML, CSS, JS나 이미지, 영상 같은 것을 말한다. HTTP request가 오면 이미 있는 것들을 response로 보내주기만 한다. 웹 애플리케이션 서버(WAS) 그렇다면 웹 애플리케이션은 무엇일까? 웹 애플리케이션은 웹 서버의 기능도 가능하지만 동적인 resource 제공을 맡는다. database와 connection을 가지고 있으며, data를 가져와 response를 보내줄 수 있다면 웹 애플리케이션 서버이다. 굳이..
보호되어 있는 글입니다.

model, serializer, urlpattern 모두 중요한 요소이다. 특히 model은 데이터베이스의 기본 틀 역할을 하니 매우 중요하다고 할 수 있다. 그래도 결국엔 views.py의 view들이 없다면 model은 빈 깡통에 불과하다. 그래서 이번에는 views.py에 대해 정리해보려한다. Class-Based-View(이하 CBV) vs Function-Base-View(이하 FBV) 처음에는 이 부분에 대한 협의없이 FBV로 회원가입과 로그인을 구현했다. github 브랜치에 푸시를 했더니, BE부문을 같이 맡고 있는 uwoobeat님이 CBV를 사용하는 것이 좋지 않겠냐는 의견을 제시해주셨다. 여태껏 FBV로 작성해와서 CBV에는 익숙하지 않았다. 그러나, 제네릭뷰 등을 사용할 수 있다는..