poscoict-glueframework.github.io

REST API

REST API는 요청/응답 통신을 위한 아키텍처 스타일입니다.
GET, POST, PUT 등과 같은 HTTP Method를 수용합니다.

spring-boot-starter-web 를 이용해서 REST API 를 개발할 수 있습니다.

REST API와 관련된 주요 annotation 은 다음과 같습니다.

다음은 개발시, 필요한 사항입니다.

  1. Maven Dependency
    Glue Maven Project로 프로젝트를 생성하면, pom.xml에 spring-boot-starter-web 이 포함되어 있습니다.
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
    
  2. @SpringBootApplication
    Glue Maven Project로 프로젝트를 생성하면, 다음과 같은 @SpringBootApplication 이 있습니다.
    @SpringBootApplication
    public class SampleApplication {
     public static void main(String[] args) {
         SpringApplication.run(SampleApplication.class, args);
     }
    }
    
  3. @RestController
    Glue Maven Project로 프로젝트를 생성하면, 다음과 같은 @RestController 가 있습니다.
    @RestController
    @RequestMapping( value = "/edu" )
    public class SampleController {
     @GetMapping
     public String getVersion() {
         return "1.0.0";
     }
    }
    
  4. 로그확인
    RequestMappingHandlerMapping의 INFO 로그에서 [/edu],methods=[GET] 을 확인할 수 있습니다.
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.0.6.RELEASE)
    .
    .
    .
    2019-01-25 09:47:21.494  INFO 6696 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/edu],methods=[GET]}" onto public java.lang.String com.poscoict.sample.rest.SampleController.getVersion()
    2019-01-25 09:47:21.494  INFO 6696 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/edu/{serviceName}],methods=[GET]}" onto public java.util.List<java.util.Map<java.lang.String, java.lang.String>> com.poscoict.sample.rest.SampleController.runGlueService(java.lang.String,javax.servlet.http.HttpServletRequest)
    

Example

glue-maven-project 예제를 실행해 볼 수 있습니다.

Try it

제공된 예제( glue-maven-project )를 Eclipse에 import 합니다.

$ cp -r glue-examples/glue-maven-project/ sample-x  # sample-x 로 복사
$ 
$ # sample-x/pom.xml 의 artifactId 값을 수정한 후 import할 것.

제공된 예제의 SampleController 에 삭제 API(DELETE request)를 추가합니다.

@RestController
@RequestMapping( value = "/edu" )
public class SampleController {
    @Autowired
    private EmpRepository repository;

    @DeleteMapping( path = "{empno}" )
    public String deleteData(@PathVariable String empno) {
        repository.deleteById(empno);
        return "deleted";
    }
}

Spring Application을 실행한 후, 콘솔 로그에서 다음과 같은 것을 확인해 보세요.

Mapped "{[/edu],methods=[DELETE]}" onto public java.lang.String com.poscoict.sample.rest.SampleController.deleteData()

Ref. 참고