플러그 인 아키텍처
플러그 인은 특정 개발 프록시 동작을 도입하는 개발자 프록시에 등록된 .NET 클래스입니다. 플러그 인은 API 사용량에 대한 실시간 지침을 제공하거나, API 동작을 시뮬레이션하거나, 여러 API 요청을 분석하거나, 보고서를 생성할 수 있습니다. 개발자 프록시에는 다음 세 가지 유형의 플러그 인이 있습니다.
- 요청 및 응답을 가로채고 분석 및 수정할 수 있는 플러그 인 가로채는
- 개발자 프록시에서 기록된 요청 실행되는 플러그 인 보고
- 플러그 인을 보고하여 수집된 데이터를 기반으로 보고서를 생성하는 기자
devproxyrc.json
파일플러그 인을 등록합니다. 파일에는 로드할 플러그 인 목록과 해당 구성이 포함되어 있습니다.
개발자 프록시는 플러그 인 컬렉션과 함께 제공되며 사용자 지정 플러그 인 만들어 필요에 맞게 개발자 프록시 기능을 확장할 수 있습니다.
개발자 프록시가 시작되면 구성 파일에서 사용하도록 설정된 플러그 인을 로드합니다. 사용하도록 설정하는 플러그 인에 따라 개발자 프록시는 지침을 제공하거나, API 동작을 시뮬레이션하거나, API 요청을 분석할 수 있습니다. 다음 섹션에서는 다양한 유형의 플러그 인이 작동하는 방식을 설명합니다.
플러그 인 가로채기
개발자 프록시는 urlsToWatch
배열의 URL 중 하나와 일치하는 요청을 가로채면 구성 파일에 나열된 순서대로 각 가로채는 플러그 인을 호출합니다. 각 절편 플러그 인은 BaseProxyPlugin
클래스에서 상속되며 다음 이벤트를 구독할 수 있습니다.
-
BeforeRequest
- 개발자 프록시가 요청을 가로챌 때 발생합니다. -
BeforeResponse
- 개발자 프록시가 서버에서 응답을 받은 후 발생합니다. -
AfterResponse
- 개발자 프록시가 클라이언트에 응답을 보낸 후 발생합니다.
이러한 각 이벤트에 대해 플러그 인은 이벤트 처리기를 정의할 수 있습니다. 처리기에서 플러그 인은 요청 및 응답을 분석하고 필요한 경우 수정할 수 있습니다. 지침 메시지를 출력할 수도 있습니다. 가능한 내용을 보려면 개발자 프록시 제공된 플러그 인의코드를 참조하세요.
보고 플러그 인
개발자 프록시를 사용하면 API 요청 및 응답을 기록할 수 있습니다. 일반적으로 기록을 사용하여 API 사용량을 보고하거나 여러 API 요청을 분석합니다. 보고 플러그 인은 BaseReportingPlugin
클래스에서 상속되고 이벤트 처리기를 AfterRecordingStop
이벤트에 등록합니다.
기록을 중지하면 Dev Proxy가 AfterRecordingStop
이벤트를 발생시키고 기록된 요청 및 응답 목록을 등록된 이벤트 처리기에 인수로 전달합니다. 그런 다음, 보고 플러그 인은 기록된 데이터를 분석하고 보고서 개체를 생성할 수 있습니다. 보고서 개체는 보고 플러그 인에서 정의한 임의의 개체입니다. 보고 플러그 인은 StoreReport
메서드를 호출하여 보고서를 저장합니다.
중요하다
보고 플러그 인은 개발자 프록시가 메모리에 저장하는 보고서 개체를 생성합니다. 이러한 보고서 개체를 사용자가 읽을 수 있는 보고서로 변환하려면 개발자 프록시 구성 파일에서 하나 이상의 기자를 사용하도록 설정해야 합니다.
기자
개발자 프록시는 기자 사용하여 플러그 인을 보고하여 생성된 보고서 개체를 사용자가 읽을 수 있는 보고서로 변환합니다. 예를 들어 MarkdownReporter 보고서 개체를 Markdown 파일로 변환합니다. 기자는 BaseReporter
클래스에서 상속되는 특수 플러그 인입니다. 보고 플러그 인에서 만든 보고서를 인수로 사용하여 문자열로 변환하는 GetReport
메서드를 구현합니다. 이 문자열은 PluginName_ReporterName.ReporterExtension
패턴(예: ApiCenterOnboardingPlugin_MarkdownReporter.md
)에 따라 디스크에 저장됩니다.
중요하다
기자는 플러그 인을 보고하여 생성된 보고서 개체에 의존하므로 플러그 인을 보고한 후 개발자 프록시 구성 파일에서 보고 플러그 인을 사용하도록 설정해야 합니다. 플러그 인을 보고하기 전에 사용하도록 설정하면 기자에게 보고할 데이터가 없습니다.
Dev Proxy