RewritePlugin

요청을 다시 작성합니다.

들어오는 API 요청을 다시 작성하는 개발자 프록시가 있는 명령 프롬프트의 스크린샷.

구성 예

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RewritePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rewritePlugin"
    }
  ],
  "rewritePlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.schema.json",
    "rewritesFile": "rewrites.json"
  }
}

구성 속성

속성 설명 기본값
rewritesFile 다시 쓰기 정의를 포함하는 파일의 경로 rewrites.json

명령줄 옵션

없음

파일 예제 다시 쓰기

다음은 다시 쓰기 규칙의 예입니다.

HTTP에서 HTTPS로 모든 요청 다시 쓰기

HTTP에서 HTTPS로 모든 요청을 다시 작성합니다. 이 컨텍스트 에서는 모두 개발자 프록시 또는 RewritePlugin으로 구성된 모든 요청을 의미합니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

요청 헤더 설정

모든 요청의 Accept-Language 헤더를 .로 https://api.contoso.com설정합니다. 요청에 헤더가 이미 있는 경우 플러그 인이 해당 값을 바꿉니다. 헤더가 누락된 경우 플러그 인이 헤더를 추가합니다. 규칙은 아웃 URL을 지정하지 않으므로 플러그 인은 요청 URL을 변경하지 않습니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/"
      },
      "out": {
        "headers": [
          {
            "name": "Accept-Language",
            "value": "nl-NL"
          }
        ]
      }
    }
  ]
}

환경 변수에서 URL로 요청 다시 쓰기

환경 변수에 저장된 API_BASE_URL 기본 URL에 https://api.contoso.com 대한 요청을 다시 작성하여 나머지 경로를 유지합니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^https://api\\.contoso\\.com/(.*)"
      },
      "out": {
        "url": "${env:API_BASE_URL}/$1"
      }
    }
  ]
}

Mocks 파일 속성

속성 설명 필수
rewrites RewritePlugin이 가로채는 요청에 적용되는 다시 쓰기 규칙 목록을 정의하는 재작성 개체의 배열 예

개체 다시 쓰기

각 다시 쓰기 규칙에는 다음과 같은 속성이 있습니다.

속성 설명 필수
in 들어오는 요청과 일치하도록 패턴을 다시 작성합니다. 예
out 패턴을 다시 작성 하여 요청 다시 쓰기 예

설명

RewritePlugin이 가로채는 요청이 in 패턴에 정의된 모든 속성과 일치하지 않는 경우 플러그 인은 요청에 다시 쓰기 규칙을 적용하지 않습니다.

패턴 다시 쓰기

각 다시 쓰기 패턴에는 다음과 같은 속성이 있습니다.

속성 설명 필수 기본값 샘플 값
url in 패턴에서 플러그 인이 URL에 적용되는 정규식입니다. out 패턴에서 요청을 다시 작성할 URL입니다. out 패턴에서 생략하면 플러그 인이 요청 URL을 변경하지 않습니다. 예 에, 아니 아웃 ^http://(.*)
headers 요청에 설정할 요청 헤더 의 배열입니다. out 패턴에서만 지원합니다. no

설명

out 패턴은 둘 다 지정urlheaders해야 합니다.

in 패턴의 정규식에서 캡처 그룹을 사용하는 경우 out 패턴으로 참조할 수 있습니다. 예를 들어 다시 쓰 http://example.com/foohttps://example.com/foo려는 경우 다음 다시 쓰기 규칙을 사용할 수 있습니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rewriteplugin.rewritesfile.schema.json",
  "rewrites": [
    {
      "in": {
        "url": "^http://(.*)"
      },
      "out": {
        "url": "https://$1"
      }
    }
  ]
}

out URL에서 구문을 사용하여 환경 변수를 참조할 ${env:VAR_NAME} 수 있습니다. 개발자 프록시는 환경 변수 as-is값을 삽입하므로 이 값은 in 패턴의 캡처 그룹을 참조할 수도 있습니다. 개발자 프록시는 in 패턴과 일치하고 in 패턴 에서 환경 변수를 확장하지 않는 요청에 대해서만 환경 변수를 확인 합니다. 참조된 환경 변수가 설정되지 않은 경우 개발자 프록시는 오류를 기록하고 다시 쓰기 규칙을 건너뜁니다.

요청 헤더

각 요청 헤더에는 다음과 같은 속성이 있습니다.

속성 설명 필수
name 요청 헤더의 이름 예
value 요청 헤더에 대해 설정할 값 예

설명

플러그 인은 대/소문자를 구분하지 않는 헤더 이름과 일치합니다. 요청에 헤더가 이미 있는 경우 플러그 인이 해당 값을 바꿉니다. 헤더가 누락된 경우 플러그 인이 헤더를 추가합니다.

플러그 인은 URL이 URL 패턴과 일치하는 요청에 대해서만 헤더를 설정합니다. 플러그 인은 동일한 규칙의 URL 다시 쓰기를 적용하기 전에 일치 항목을 평가하므로 규칙이 URL과 헤더를 모두 다시 쓸 때 헤더는 URL 다시 쓰기와 동일한 요청에 적용됩니다.

구문을 사용하여 헤더 값에서 환경 변수를 참조할 ${env:VAR_NAME} 수 있습니다. 개발자 프록시는 외부 URL과 동일한 방식으로 이를 확인하고 참조된 환경 변수가 설정되지 않은 경우 다시 쓰기 규칙을 건너뜁니다. 헤더 값은 in 패턴의 캡처 그룹을 지원하지 않습니다.