ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 버전 관리(Versioning)
    BackEnd/Spring Boot 2022. 4. 26. 08:35
    반응형

    Overview

      해당 글에서는 REST API 버전 관리 방법에 대해 알아보겠습니다.

     

    URI Versioning

      모든 URI에 공통적으로 적용되는 "/goods"의 경우 @RequestMapping 애노테이션을 사용하여 설정합니다.

    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
      @GetMapping(path = "/v1/{goodsCode}") // endpoint
      public Goods findGoodsV1(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    
      @GetMapping(path = "/v2/{goodsCode}") // endpoint
      public Goods findGoodsV2(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    }

     

    Request Parameter Versioning

    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
      @GetMapping(path = "/{goodsCode}/", params = "version=1")
      public Goods findGoodsV1(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    
      @GetMapping(path = "/{goodsCode}/", params = "version=2")
      public Goods findGoodsV2(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    }

     

    Headers Versioning

    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
      @GetMapping(path = "/{goodsCode}", headers = "X-API-VERSION=1")
      public Goods findGoodsV1(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    
      @GetMapping(path = "/{goodsCode}", headers = "X-API-VERSION=2")
      public Goods findGoodsV2(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    }

     

    Media type Versioning

    @RestController
    @RequestMapping("/goods")
    public class GoodsController {
    
      @GetMapping(path = "/{goodsCode}", produces = "application/vnd.company.appv1+json")
      public Goods findGoodsV1(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    
      @GetMapping(path = "/{goodsCode}", produces = "application/vnd.company.appv2+json")
      public Goods findGoodsV2(@PathVariable int goodsCode) throws Exception {
      	/* ... 생략 ... */
      }
    }

    반응형

    'BackEnd > Spring Boot' 카테고리의 다른 글

    Actuator  (0) 2022.05.20
    HATEOAS  (0) 2022.05.20
    @JsonIgnore  (0) 2022.04.25
    XML format  (0) 2022.04.25
    다국어 처리(Internationalization)  (0) 2022.04.08

    댓글

Designed by Tistory.