전체 글 (160) 썸네일형 리스트형 Spring boot 공부 5 - filter Filter Web Application 에서 관리되는 영역으로 Spring boot Framework에서 Client 로 부터 오는 요청 / 응답에 대해서 최초 / 최종 단계의 위치에 존재하며 , 이를 통해서 요청/응답의 정보를 변경하거나 , Spring 에 의해서 데이터가 변환되기 전의 순수한 Client의 요청 / 응답 값을 확인 할 수 있다. 유일하게 ServletRequest,ServletResponse 객체를 변환 할 수 있다. 주로 Spring 에서는 request/ response의 Logging 용도로 활용하거나 , 인증과 관련된 Logic 들을 해당 Filter에서 처리 한다. 이를 선 / 후 처리 함으로써 , Service business logic과 분리 시킨다. Spring MVC.. Spring boot 공부 4 - Error 데이터 커스터마이징해서 응답 @ExceptionHandler를 통해 예외를 잡아 응답하는 방식을 알아봤었다. 다른 처리를 하지 않는다면 , 기본적인 정보들만 응답이 되기 때문에 해당에러에 대한 정보를 ExceptionHandler 메소드의 파라미터를 통해 뽑아내 json 형식 데이터로 내려 주는 방법을 알아보자. MethodArgumentNotValidException 을 예외처리한다 가정해 봤다 . ExceptionHandler 메소드의 코드는 아래와 같다 @ExceptionHandler(value = MethodArgumentNotValidException.class) public ResponseEntity MethodArgumentNotValidException(MethodArgumentNotValidException e,Ht.. Spring boot 공부 3 - 예외 처리 ControllerAdvice와 @ExceptionHandler Web Application의 입장에서 에러가 났을 때 에러를 내려줄 수 있는 방법은 아래와 같다 1. 에러 페이지 2. 4xx Error or 5xx Error 3. Client 가 200 외에 처리를 하지 못 할 때는 200을 내려주고 별도의 에러 Message를 전달 두 가지 요청이 있다 Get 요청 컨트롤러의 경우 이름과 age를 파라미터로 받는고 age 는 Integer 타입이기 때문에 값이 없다면 null로 들어오게 된다 . setAge 부분에서 NullPointerExcetion(NPE라고 하겠다)이 발생할 것이다 . 요청과 응답 결과는 아래 그림과 같다 서버쪽에서 NPE 가 발생했기 때문에 500 에러가 발생했다 기본적인 정보는 들어가 있지만 어떤에러가 발생했는지는 알 수 없다. Post .. Spring boot 공부 2 - validation 과 custom validation 만들기 스프링이 요청데이터에 대한 검증을 해줄 수 있다 . 컨트롤러로 들어오는 요청데이터를 파라미터로 지정된 오브젝트에 어노테이션을 활용해 검증할 수 있다 . validation 을 사용하기 위해선 maven 혹은 gradle에 dependency를 추가해줘야한다 . maven dependency org.springframework.boot spring-boot-starter-validation //메이븐 gradle dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' t.. Spring boot 공부 1 - ObjectMapper 클라이언트 request를 통해 전달된 json 데이터를 Spring의 Object Mapper가 컨트롤러에 정의해놓은 파라미터 중 매칭되는 것을 찾아 Json 값을 Object의 필드와 비교해 바인딩 해준다. 이때 json데이터의 키값과 오브젝트 필드명이 일치해야 하는데 json 데이터의 키값은 snake case를 주로 사용하고 java 오브젝트 필드명은 camel case를 사용해여 불일치가 일어난다. 이럴경우 해당 오브젝트 필드에 @JsonProperties를 통해 특정 필드에 json 키값을 지정할 수 있다. 만약 오브젝트 클래스 전체에 대하여 형식지정을 원한다면 해당 클래스에 @JsonNaming을 붙히면된다 위 의 클래스의 경우 List 타입의 필드를 가지고 있는데 , 위 클래스처럼 Json.. 웹 개발 기본 공부 6 - HTTP 메서드 URI (Uniform Resource Identifier) 리소스의 의미 - 회원을 등록하고 수정하고 조회하는게 리소스가 아니다 - 회원이라는 개념 자체가 바로 리소스이다. URI 설계시 고려할 것 -URI는 리소스만 식별한다 (리소스와 행위를 분리) ex) 리소스 : 회원 행위 : 조회 , 등록 , 삭제 , 변경 -리소스는 명사 , 행위는 동사 HTTP 메서드 GET: 리소스 조회 POST: 요청 데이터 처리 , 주로 등록에 사용 PUT : 리소스를 대체 , 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 1.GET - 리소스 조회 - 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 퀴리 스트링)을 통해서 전달 - 메시지 바디를 사용해서 데이터를 전달할 수.. 웹 개발 기본 공부 5 - HTTP 란? HTTP 특징 1.클라이언트 서버 구조이다 Request Response 클라이언트는 서버에 요청을 보내고 ,응답을 대기 서버가 요청에 대한 결과를 만들어서 응답하는 구조이다. 비지니스 로직과 데이터는 서버에서 처리하고 클라이언트에서는 UI와 UX에 집중하여 클라이언트와 서버가 각각 독립적으로 진화할 수 있다. 2.무상태 프로토콜을 지향한다. (stateless) -서버가 클라이언트의 상태를 보존하지 않는다 장점: 서버 확장성이 높다 (스케일 아웃) 단점: 클라이언트가 추가 데이터를 전송해야 한다. stateless 와 stateful의 차이 예시1) 식당에서 햄버거를 주문한다는 예시로 stateful(상태유지)를 설명하면 아래와 같다. 고객: 햄버거 얼마 인가요? 점원 : 만원입니다. 고객: 2개 주세.. 웹 개발 기본 공부 4 - PORT , DNS PORT IP가 데이터의 목적지를 구분한다면 PORT는 그 목적지 안에서 돌아가고 있는 애플리케이션(프로세스)을 구분하는데 사용된다. 만약 내 컴퓨터에서 아래 3개의 프로그램이 돌아가고 있다고 생각하면 아래와 같이 연결되어 패킷을 전송한다. 클라이언트 (IP : 100.112.33) -> 이전 1 ··· 9 10 11 12 13 14 15 ··· 20 다음