Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

[SPRING-FRAMEWORK] RESTCONTROLLER / REST API 설정

2020. 12. 10. 10:50programming/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&lt;String, Object> test(HttpServletRequest request, HttpServletResponse response) {
            
            HashMap&lt;String, Object> map = new HashMap&lt;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