관리 메뉴

nalaolla

API및 gateway 개발 본문

프로젝트 개발정보

API및 gateway 개발

날아올라↗↗ 2017. 12. 4. 22:48
728x90

API Versioning


  • API Versioning을  API Gateway에서 관리된다 
  • API Gateway가 설정되지 않은경우 다음과 같이 소스레벨에 versioning을 넣는다 

    서비스명 : vendor-api
    API 호출 예) http://localhost:8001/vendor-api/v1/tests/home



    @RestController
    //Api에서 verserning을 위해서 버젼정보를 넣어야 한다 v1
    @RequestMapping("/v1/tests")
    publicclassIcmsApiController {

        @RequestMapping("/home")
        publicString home() {
            return"test 예시 샘플입니다 사용시 지우고 하세요 ";
        }
    }

  • API Gateway 가  설정 되면 Controller에서 일괄적으로 삭제할 예정이다


API  호출시 apiKey  관련 개발 가이드 


  • apiKey는 프로젝트별 1개의 키만 생성한다 
  • 따라서 icms-api의 컨드롤러를  호출하는 경우 모두 같은 키로 호출된다 
  • apiKey yml 등록 가이드 

[ 변경전  ] icms-bo > application.yml

api:
  server: http://127.0.0.1 
  icms : :8001/icms-api
  post:
    keyName: apikey
    keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0
  code:
    keyName: apikey
    keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0 
  user:
    keyName: apikey
    keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0
  system:
    keyName: apikey
    keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0
  screen:
    keyName: apikey
    keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0


[ 변경후 ] icms-bo > application.yml

api:
    icms:
        server: http://127.0.0.1:8001/icms-api
        keyName: apikey
        keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0
    vendor:  #  vendor api 접속이 필요한 경우
        server: http://127.0.0.1:8003/vendor-api
        keyName: apikey
        keyValue: l7xx9b7adb3e0eaf4e4e91f68ed67d5e3ef0

 위와 같이 format을 따른다 

api:

    [서비스명 ]

           server:

           keyName:

           keyValue:

참고로 현재  keyName 과  keyValue는 모두 mock 값으로 동일하며 향후 apigateway가 연동될때 일괄적으로 등록할 예정이다 


ServiceConfig.java 설정 

@Configuration
@Data
public class ServiceConfig {
     
    @Value("${api.icms.server}")
    private String apiIcms.Server;
     
    @Value("${api.icms.keyName}")
    private String apiIcmsKeyName;
         
    @Value("${api.icms.keyValue}")
    private String apiIcmsKeyValue;
 
   //  vendor api 접속이 필요한 경우에 추가하여 등록
    @Value("${api.vendor.server}")
    private String apiVendor.Server;
     
    @Value("${api.vendor.keyName}")
    private String apiVendorKeyName;
         
    @Value("${api.vendor.keyValue}")
    private String apiVendorKeyValue;
}


728x90