[SPRING-FRAMEWORK] RESTCONTROLLER / REST API 설정
2020. 12. 10. 10:50ㆍprogramming/spring-framework
728x90
pom.xml
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
web.xml
<servlet>
<servlet-name>api_appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/servlet/api_servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>api_appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
api_servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd">
<annotation-driven />
<context:component-scan base-package="com.emoney.web.controller.api" />
</beans:beans>
ApiController.java
package com.web.controller.api;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class ApiController {
@RequestMapping(value="/test" , produces = "application/json", method= RequestMethod.GET)
public HashMap<String, Object> test(HttpServletRequest request, HttpServletResponse response) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("test", "API 테스트");
return map;
}
}
호출 방식 : localhost/api/test
@RestController 동작 방식
@RestController 어노테이션을 클래스 상단에 선언하면 Method 마다 @ResponseBody를 붙여주지 않아도 된다.
Controller는 일반적으로 view page 이름으로 리턴하며 사용자에게 화면을 보여주게 됩니다.
사용자의 요청이 오면 ViewResolver를 통해 사용자에게 text/html 타입의 응답을 보내줍니다.
@RestController 에서는 return 값이 view page 이름이 아니라 HTTP ResponseBody에 직접 쓰게 됩니다.
사용자의 요청이 오면 MessageConverter를 통해서 application/json, text/plain 등 알맞는 형태로 리턴하게 됩니다.
호출 후 리턴되는 값 {“test”:”test api”}
위의 MessageConverter를 사용하려면 com.fasterxml.jackson.cor 라이브러리를 추가해야합니다.
servlet.xml에 <annotaion-driven /> 입력하면 디폴트로 MessageConverter가 자동으로 등록된다고 합니다.
728x90