전체 글
-
HTTP 요청 맵핑하기 3부: 미디어 타입 맵핑SPRING/스프링 MVC 2021. 6. 26. 22:20
특정한 타입의 데이터를 담고 있는 요청만 처리하는 핸들러 - @RequestMapping(consumes=MediaType.APPLICATION_JSON_UTF8_VALUE) - Content-Type 헤더로 필터링 - 매치 되는 않는 경우에 415 Unsupported Media Type 응답 특정한 타입의 응답을 만드는 핸들러 - @RequestMapping(produces=”application/json”) - Accept 헤더로 필터링 (Accept Type 헤더에 아무 것도 없는 경우에는 produces에 어떤 타입을 맵핑하더라도 정상 동작) - 매치 되지 않는 경우에 406 Not Acceptable 응답 @Controller @RequestMapping(consumes = MediaType...
-
HTTP 요청 맵핑하기 2부: URI 패턴 맵핑SPRING/스프링 MVC 2021. 6. 20. 16:10
요청 식별자로 맵핑하기 - @RequestMapping은 다음의 패턴을 지원합니다. - ?: 한 글자 (“/author/???” => “/author/123”) - *: 여러 글자 (“/author/*” => “/author/keesun”) - **: 여러 패스 (“/author/** => “/author/keesun/book”) @Controller public class SampleController { @RequestMapping(value = "/hello", method = {RequestMethod.GET}) @ResponseBody public String hello() { return "hello"; } @RequestMapping(value="/hello/?") @ResponseBody ..
-
요청 맵핑하기 1부 : HTTP METHODSPRING/스프링 MVC 2021. 6. 20. 14:41
HTTP Method - GET, POST, PUT, PATCH, DELETE GET 요청 - 클라이언트가 서버의 리소스를 요청할 때 사용한다. - 캐싱 할 수 있다. (조건적인 GET으로 바뀔 수 있다.) - 브라우저 기록에 남는다. - 북마크 할 수 있다. - 민감한 데이터를 보낼 때 사용하지 말 것. (URL에 다 보이기 때문.) - idempotent idempotent 이란 ? : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미함 ex:) 로그인페이지는 몇번을 호출해도 똑같으니, idempotent함. 로그인 후 나오는 메인 페이지는 환경설정 등에 따라 달라질 수 있기 때문에 idempotent하지 않음. POST 요청 - 클라이언트가 서버의 리소스를 수정하거나 새로 만들 때 사용..
-
기타 WebMvcConfigurer 설정SPRING/스프링 MVC 2021. 6. 19. 17:04
CORS 설정 - Cross Origin 요청 처리 설정 - 같은 도메인에서 온 요청이 아니더라도 처리를 허용하고 싶다면 설정한다. 리턴 값 핸들러 설정 -스프링 MVC가 제공하는 기본 리턴 값 핸들러 이외에 리턴 핸들러를 추가하고 싶을 때 설정한다. 아큐먼트 리졸버 설정 - 스프링 MVC가 제공하는 기본 아규먼트 리졸버 이외에 커스텀한 아규먼트 리졸버를 추가하고 싶을 때 설정한다. 뷰 컨트롤러 - 단순하게 요청 URL을 특정 뷰로 연결하고 싶을 때 사용할 수 있다. 비동기 설정 - 비동기 요청 처리에 사용할 타임아웃이나 TaskExecutor를 설정할 수 있다. 뷰 리졸버 설정 - 핸들러에서 리턴하는 뷰 이름에 해당하는 문자열을 View 인스턴스로 바꿔줄 뷰 리졸버를 설정한다. Content Negot..
-
HTTP 메시지 컨버터 : XMLSPRING/스프링 MVC 2021. 6. 19. 00:13
OXM(Object-XML-Mapper) 라이브러리 중에 스프링이 지원하는 의존성 추가 - JacksonXML - JAXB 스프링 부트를 사용하는 경우에도 기본으로 XML 의존성을 추가해주지 않음. javax.xml.bind jaxb-api org.glassfish.jaxb jaxb-runtime org.springframework spring-oxm ${spring-framework.version} Mashaller 등록 @Configuration public class WebConfig implements WebMvcConfigurer { @Bean public Jaxb2Marshaller jaxb2Marshaller() { Jaxb2Marshaller jaxb2Marshaller = new Jaxb..
-
HTTP 메시지 컨버터 : JSONSPRING/스프링 MVC 2021. 6. 18. 16:41
스프링 부트를 사용하지 않는 경우(SPRING MVC)에는 사용하고 싶은 JSON 라이브러리를 의존성으로 추가 - GSON - JacksonJSON - JacksonJSON 2 스프링 부트를 사용하는 경우 - 기본적으로 spring-boot-starter-web에 JacksonJSON 2가 의존성으로 들어있다. - 즉, JSON용 HTTP 메시지 컨버터가 기본으로 등록되어 있다. @RestController public class SampleController { @GetMapping("/jsonMessage") public Person jsonMessage(@RequestBody Person person) { return person; } } POSTMAN 테스트 테스트코드 @RunWith(Spring..
-
HTTP 메시지 컨버터 : 개요SPRING/스프링 MVC 2021. 6. 18. 11:09
HTTP 메시지 컨버터 - 요청 본문에서 메시지를 읽어들이거나(@RequestBody), 응답 본문에 메시지를 작성할 때(@ResponseBody) 사용한다. @RestController public class SampleController { @GetMapping("/message") public String message(@RequestBody String body) { return body; } } 기본 HTTP 메시지 컨버터 - 바이트 배열 컨버터 - 문자열 컨버터 - Resource 컨버터 - Form 컨버터 (폼 데이터 to/from MultiValueMap) - (JAXB2 컨버터) - (Jackson2 컨버터) - (Jackson 컨버터) - (Gson 컨버터) - (Atom 컨버터) - ..
-
Resource HandlerSPRING/스프링 MVC 2021. 6. 16. 15:23
이미지, 자바스크립트, CSS 그리고 HTML 파일과 같은 정적인 리소스를 처리하는 핸들러 등록하는 방법 리소스 핸들러 설정 - 어떤 요청 패턴을 지원할 것인가 - 어디서 리소스를 찾을 것인가 - 캐싱 - ResourceResolver: 요청에 해당하는 리소스를 찾는 전략 Ex:) 캐싱, 인코딩(gzip, brotli), WebJar - ResourceTransformer: 응답으로 보낼 리소스를 수정하는 전략 Ex:) 캐싱, CSS 링크, HTML5 AppCache @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry ..