@RequestBody 오류
전자정부 표준프레임워크에서 RESTful API 중 postmapping으로 회원가입을 구현하려는 상황에서, RequestBody로 VO에 클라이언트가 전송한 데이터를 받으려는데 해당 컨트롤러에 매핑이 안되는 오류 발생.
알고보니 전자정부 프레임워크에서는 @RequestBody 어노테이션을 활용하려면 dispatcher-servlet.xml에서 별도의 설정이 필요하다.
<mvc:annotation-driven></mvc:annotation-driven>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
</bean>
해당 설정 추가하고 실행해보니 매핑 성공했다!
GetMapping 오류
회원의 아이디를 url에 파라미터로 붙이는 Get 방식을 이용하여 회원 조회 기능을 사용하려 하였으나.. 클라이언트의 요청 url과 컨트롤러의 매핑 value가 같은데도 404 오류가 뜨는 에러가 발생했다.
원인은 REST API get 방식에 파라미터를 쓸 때는 계층적 url을 사용해야 하는데, 전자정부 프레임워크의 디폴트 설정은 모든 url 매핑 시 url 마지막에 .do를 붙이는 설정이 되어있기 때문에 계층적 url 적용이 안 되기 때문이었다.
따라서 web.xml에서 url 매핑 부분 설정을 수정해야 한다.
<servlet-mapping>
<servlet-name>action</servlet-name>
<!-- <url-pattern>*.do</url-pattern> -->
<url-pattern>/</url-pattern>
</servlet-mapping>
이렇게 전자정부 프레임워크에 성공적으로 RESTful API 설정 완료!