본문 바로가기

전체 글46

API 예외 처리 정상 응답과 오류 응답@RestControllerpublic class ApiExceptionController { @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id){ if(id.equals("ex")){ throw new RuntimeException("잘못된 사용자"); } if(id.equals("bad")){ throw new IllegalArgumentException("잘못된 입력 값"); } if(id.equals("user-ex")){ throw n.. 2024. 7. 21.
HttpEntity HttpEntitypublic class HttpEntity { private final HttpHeaders headers; @Nulladble private final T body;}HTTP 요청 또는 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 ClassHTTP 메시지를 편하게 조회 가능해당 Class를 상속받은 RequestEntity, ResponseEntity가 대표적ResponseEntitySpring MVC에서 HTTP  요청에 대한 응답을 제어하는데 사용하는 ClassHttpEntity를 상속받고 사용자의 HttpRequest에 대한 응답 데이터가 포함된 Class이기 때문에 HttpStatus, HttpHeader, HttpBody를 .. 2024. 7. 21.
서블릿 예외 처리 Exception자바 직접 실행   실행 도중 예외를 잡지 못하고 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료웹 애플리케이션   try - catch로 예외를 잡지 못하면 톰캣 같은 WAS까지 예외 전달   WAS(전파) response.sendErrorresponse.sendError(Http 상태 코드)response.sendError(Http 상태 코드, 오류 메시지)HttpServlerResponse가 제공하는 메서드호출 시 당장 예외가 발생하는 것이 아닌, 서블릿 컨테이너에게 오류가 발생했다는 것을 전달HTTP 상태 코드와 오류 메시지도 추가 가능WAS(sendError 호출 기록 확인) 사용 예시@GetMapping("/error-404-t.. 2024. 7. 20.
스프링 인터셉터 스프링 인터셉터서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결하는 기술스프링 MVC가 제공하는 기술스프링 인터셉터 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출스프링 인터셉터 제한HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 // 로그인 사용자HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터(적절하지 않은 요청이라 판단 시 컨트롤러 호출 X)스프링 인터셉터 체인HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터1 -> 스프링 인터셉터2 -> 컨트롤러스프링 인터셉터는 체인으로 구성중간에 인.. 2024. 7. 11.
서블릿 필터 서블릿 필터필터는 웹과 관련된 공통 관심사(로그인, 사용자 권한 등)를 처리할 때 주로 사용지정한 URL 패턴에 대해 거름막 역할을 해주는 기능필터 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러필터 제한HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 // 로그인 사용자HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단 시 서블릿 호출 X) // 비 로그인 사용자필터 체인HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러필터는 체인으로 구성중간에 필터를 자유롭게 추가 가능(순서 지정 가능)Filter 인터페이스public interface Filter { public default void init(Filte.. 2024. 7. 11.
Bean Validation 유효성 검사 애노테이션@Null // null만 혀용@NotNull // null을 허용하지 않음, "", " "는 허용@NotEmpty // null, ""을 또는 리스트 [] 빈값 허용하지 않음, " "는 허용@NotBlank // null, "", " " 모두 허용하지 않음@Email // 이메일 형식을 검사. 다만 ""의 경우를 통과. @Email보다 @Patten을 통한 정규식 검사를 더 많이 사용@Pattern(regexp = ) // 정규식을 검사할 때 사용@Size(min=, max=) // 문자길이를 제한할 때 사용, int는 불가!@Max(value = ) // 숫자 value 이하의 값을 받을 때 사용@Min(value = ) // 숫자 value 이상의 값을 받을 때 .. 2024. 6. 29.