다음을 통해 공유


Dev Proxy를 사용하여 섀도 API 검색

Azure API Center를 사용하면 조직에서 사용되는 API를 카탈로그화할 수 있습니다. 이를 통해 어떤 API를 사용하는지, API가 수명 주기 중 어디에 있는지, 문제가 있는 경우 누구에게 연락해야 하는지 알 수 있습니다. 즉, 최신 API 카탈로그를 보유하면 거버넌스, 준수 및 보안 태세를 개선하는 데 도움이 됩니다.

앱을 빌드할 때, 특히 새 시나리오를 통합하는 경우 Azure API Center에 등록되지 않은 API를 사용할 수 있습니다. 이러한 API를 섀도 API라고 합니다. 섀도 API는 조직에 등록되지 않은 API입니다. 아직 등록되지 않은 API일 수도 있고 조직에서 사용할 수 없는 API일 수도 있습니다.

섀도 API를 확인하는 한 가지 방법은 개발 프록시를 사용하는 것입니다. 개발 프록시는 애플리케이션의 API 요청을 가로채서 분석하는 API 시뮬레이터입니다. 개발 프록시의 기능 중 하나는 가로채는 API 요청이 API Center에 등록된 API에 속하는지 확인하는 것입니다.

기록된 API 요청이 Azure API Center에 등록되었는지 확인하는 개발 프록시를 보여 주는 명령 프롬프트 스크린샷.

시작하기 전에

섀도 API를 검색하려면 조직에서 사용하는 API에 대한 정보가 포함된 Azure API Center 인스턴스가 있어야 합니다. 아직 API 센터를 만들지 않았다면 빠른 시작: API 센터 만들기를 참조하세요. 또한 개발 프록시를 설치해야 합니다.

API Center 정보 복사

Azure API Center 인스턴스 개요 페이지에서 API Center 인스턴스의 이름, 리소스 그룹 이름 및 구독 ID를 복사합니다. Azure API Center 인스턴스에 연결할 수 있도록 개발 프록시 ApiCenterOnboardingPlugin을 구성하려면 이 정보가 필요합니다.

여러 속성이 강조 표시된 Azure API Center 개요 페이지의 스크린샷.

개발 프록시 구성

앱이 섀도 API를 사용하고 있는지 확인하려면 개발 프록시 구성 파일에서 ApiCenterOnboardingPlugin을 사용하도록 설정해야 합니다. 앱에서 사용하는 API 보고서를 만들려면 보고자를 추가합니다.

ApiCenterOnboardingPlugin 사용

devproxyrc.json 파일에서 다음 구성을 추가합니다.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

subscriptionId, resourceGroupNameserviceName 속성에서 Azure API Center 인스턴스에 대한 정보를 제공합니다.

urlsToWatch 속성에서 앱이 사용하는 URL을 지정합니다.

개발 프록시 도구 키트 Visual Studio Code 확장을 사용하면 개발 프록시 구성을 쉽게 관리할 수 있습니다.

보고자 추가

ApiCenterOnboardingPlugin은 앱이 사용하는 API에 대한 보고서를 생성합니다. 이 보고서를 보려면 개발 프록시 구성 파일에 보고자를 추가합니다. 개발 프록시는 여러 보고자를 제공합니다. 이 예에서는 일반 텍스트 보고자를 사용합니다.

일반 텍스트 보고자에 대한 참조를 사용하여 devproxyrc.json 파일을 업데이트합니다.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

앱이 섀도 API를 사용하고 있는지 확인합니다.

앱이 섀도 API를 사용하고 있는지 확인하려면 Azure 구독에 연결하고 개발 프록시를 실행한 후 앱에서 API 요청을 가로채도록 합니다. 그런 다음 개발 프록시는 API 요청에 대한 정보를 Azure API Center의 정보와 비교하고 API Center에 등록되지 않은 모든 API에 대해 보고합니다.

Azure 구독에 연결

개발 프록시는 Azure API Center의 정보를 사용하여 앱이 섀도 API를 사용하고 있는지 확인합니다. 이 정보를 가져오려면 Azure 구독에 연결해야 합니다. 여러 가지 방법으로 Azure 구독에 연결할 수 있습니다.

개발 프록시 실행

Azure 구독에 연결한 후 개발 프록시를 시작합니다. devproxyrc.json 파일이 있는 동일한 폴더에서 개발 프록시를 시작하면 구성이 자동으로 로드됩니다. 그렇지 않으면 --config-file 옵션을 사용하여 구성 파일의 경로를 지정합니다.

개발 프록시가 시작되면 Azure 구독에 연결할 수 있는지 확인합니다. 연결에 성공하면 다음과 유사한 메시지가 표시됩니다.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

앱에서 API 요청 기록을 시작하려면 r을 누릅니다.

앱 사용

평소처럼 앱을 사용합니다. 개발 프록시는 API 요청을 가로채서 이에 대한 정보를 메모리에 저장합니다. 개발 프록시가 실행되는 명령줄에서 앱이 생성하는 API 요청에 대한 정보를 확인해야 합니다.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through

섀도 API 확인

s를 눌러 녹음을 중지합니다. 개발 프록시는 API Center 인스턴스에 연결하고 요청에 대한 정보를 API Center의 정보와 비교합니다.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...

개발 프록시는 분석을 마치면 다음 콘텐츠가 포함된 ApiCenterOnboardingPlugin_PlainTextReporter.txt라는 파일에 보고서를 만듭니다.

New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1

APIs that are already registered in Azure API Center:

GET https://jsonplaceholder.typicode.com/posts

섀도 API 자동 온보딩

ApiCenterOnboardingPlugin은 섀도 API를 검색할 수 있을 뿐만 아니라 자동으로 API Center에 온보딩할 수도 있습니다. 섀도 API를 자동으로 온보딩하려면 개발 프록시 구성 파일에서 createApicEntryForNewApistrue로 업데이트합니다.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

createApicEntryForNewApistrue로 설정하여 개발 프록시를 실행하면 검색하는 섀도 API에 대해 Azure API Center에 새 API 항목이 자동으로 만들어집니다.

새로 온보딩된 API를 보여 주는 API Center의 스크린샷.

OpenAPI 사양을 사용하여 섀도 API를 자동으로 온보딩합니다.

API Center에 섀도 API를 자동으로 온보딩하도록 선택하면 개발 프록시가 API에 대한 OpenAPI 사양을 생성하도록 할 수 있습니다. OpenAPI 사양을 갖춘 온보딩 API는 누락된 엔드포인트의 온보딩 속도를 높이고 API에 대해 필요한 정보를 제공합니다. ApiCenterOnboardingPlugin이 개발 프록시가 새 OpenAPI 사양을 만들었음을 검색하면 이를 API Center의 해당 온보딩 API와 연결합니다.

온보딩된 API에 대한 OpenAPI 사양을 자동으로 생성하려면 OpenApiSpecGeneratorPlugin을 포함하도록 개발 프록시 구성을 업데이트합니다.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Important

개발 프록시는 구성에 등록된 순서대로 플러그 인을 실행합니다. ApiCenterOnboardingPlugin이 새 API를 온보딩하기 전에 OpenAPI 사양을 만들 수 있도록 먼저 OpenApiSpecGeneratorPlugin을 온보딩해야 합니다.

이 구성으로 개발 프록시를 실행하면 Azure API Center에서 검색하는 섀도 API에 대한 새 API 항목이 자동으로 만들어집니다. 각각의 새로운 API에 대해 개발 프록시는 OpenAPI 사양을 생성하고 이를 API Center의 해당 온보딩 API와 연결합니다.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Creating OpenAPI spec from recorded requests...
 info    Created OpenAPI spec file jsonplaceholder.typicode.com-20240614104931.json
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1
 info    Creating new API entries in API Center...
 info      Creating API new-jsonplaceholder-typicode-com-1718354977 for https://jsonplaceholder.typicode.com...
 info    DONE

OpenAPI 사양을 사용하여 새로 온보딩된 API를 보여 주는 Azure API Center의 스크린샷.

요약

개발 프록시와 해당 ApiCenterOnboardingPlugin을 사용하면 앱이 섀도 API를 사용하고 있는지 확인할 수 있습니다. 플러그 인은 앱의 API 요청을 분석하고 Azure API Center에 등록되지 않은 API 요청을 보고합니다. 플러그 인을 사용하면 누락된 API를 API Center에 쉽게 온보딩할 수 있습니다. ApiCenterOnboardingPlugin 플러그 인을 OpenApiSpecGeneratorPlugin과 결합하면 새로 온보딩된 API에 대한 OpenAPI 사양을 자동으로 생성할 수 있습니다. 이 검사를 수동으로 실행하거나 CI/CD 파이프라인과 통합하여 앱이 프로덕션에 출시되기 전에 등록된 API를 사용하고 있는지 확인할 수 있습니다.

자세한 정보