개발 프록시 시작

개발 프록시는 복원력 있는 앱을 빌드하는 데 도움이 되는 클라우드 API의 동작 및 오류를 시뮬레이션하는 데 도움이 되는 명령줄 도구입니다.

이 자습서에서는 개발 프록시를 설치, 실행 및 구성하는 방법을 알아봅니다.

문제가 발생하면 새 문제를 제기하여 주저하지 말고 연락해 주시면 기꺼이 도와드리겠습니다.

개발 프록시 설치

개발 프록시를 설치하는 가장 쉬운 방법은 winget을 사용하는 것입니다. 또는 개발자 프록시를 수동으로 설치할 수 있습니다.

winget을 사용하여 개발 프록시를 설치하려면 다음 명령을 실행합니다.

winget install Microsoft.DevProxy --silent

중요

개발 프록시 설치 관리자는 PATH에 새 항목을 추가합니다. 설치 후 개발 프록시를 사용하려면 명령 프롬프트를 다시 시작하여 PATH 환경 변수가 새로 고쳐지도록 해야 합니다.

참고

최신 미리 보기 기능을 사용하려면 개발 프록시의 베타 버전을 설치합니다.

winget을 사용하여 개발 프록시를 설치하려면 다음 명령을 실행합니다.

winget install Microsoft.DevProxy.Beta --silent

개발 프록시의 베타 버전을 실행하려면 devproxy-beta

개발자 프록시를 설치하는 가장 쉬운 방법은 Homebrew 사용하는 것입니다. 또는 개발자 프록시를 수동으로 설치할 수 있습니다.

Homebrew 사용하여 개발 프록시를 설치하려면 다음 명령을 실행합니다.

brew tap microsoft/dev-proxy
brew install dev-proxy

참고

최신 미리 보기 기능을 사용하려면 개발 프록시의 베타 버전을 설치합니다.

Homebrew 사용하여 개발 프록시를 설치하려면 다음 명령을 실행합니다.

brew tap microsoft/dev-proxy
brew install dev-proxy-beta

개발 프록시의 베타 버전을 실행하려면 devproxy-beta

처음으로 개발 프록시 시작

컴퓨터에서 개발자 프록시를 처음 시작할 때 개발자 프록시가 컴퓨터의 요청을 가로채 성공적으로 응답할 수 있도록 몇 가지 단계를 수행해야 합니다. 첫 번째 실행 후에는 이러한 단계를 반복할 필요가 없습니다.

  1. 개발 프록시를 시작합니다. 명령 프롬프트 세션을 엽니다. devproxy을 입력하고 Enter 키를 누릅니다.
  2. 인증서를 신뢰합니다. 개발자 프록시는 라는 Dev Proxy CA인증서를 설치합니다. 경고가 표시됩니다. 인증서를 설치할 것인지 확인하려면 선택합니다 Yes . 개발자 프록시는 이 인증서를 사용하여 컴퓨터에서 보낸 HTTPS 트래픽의 암호를 해독합니다.
  3. 방화벽 액세스를 허용합니다. Windows 방화벽은 프록시를 차단합니다. 경고가 표시됩니다. 단추를 선택하여 Allow access 방화벽을 통한 트래픽을 허용합니다.
  1. 개발 프록시를 시작합니다. 명령 프롬프트 세션을 엽니다. devproxy을 입력하고 Enter 키를 누릅니다.
  2. 인증서를 신뢰합니다. 개발자 프록시는 라는 인증서를 설치합니다. 이 인증서 Dev Proxy CA는 컴퓨터에서 보낸 HTTPS 트래픽의 암호를 해독하는 데 사용합니다. 경고가 표시됩니다. y 키를 눌러 인증서를 신뢰할 수 있는지 확인합니다.
  3. 들어오는 연결을 허용합니다. 경고가 표시됩니다. 를 선택하여 Allow 확인합니다.

명령 프롬프트에 다음 출력이 표시됩니다.

8 error responses loaded from devproxy-errors.json
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

기본적으로 개발자 프록시는 다음으로 구성됩니다.

  • JSON 자리 표시자 API 엔드포인트에 대한 가로채기 요청
  • 실패율이 50%인 API 오류 응답 및 API 제한을 시뮬레이션합니다.

인터셉트 요청

개발자 프록시는 컴퓨터의 모든 애플리케이션에서 알려진 URL에 대한 요청을 가로채게 됩니다. 요청이 감지되면 개발자 프록시가 요청을 통해 API에 전달하거나(아무 작업도 수행하지 않음) 응답을 반환합니다.

  • 명령줄에서 JSON 자리 표시자 API에 요청을 보내고 프록시 프로세스로 다시 전환하여 출력을 봅니다.

PowerShell에서 cmdlet을 Invoke-WebRequest 사용하여 JSON 자리 표시자 API에 GET 요청을 보냅니다.

Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts

를 사용하는 curl경우 다음 명령을 사용하여 JSON 자리 표시자 API에 GET 요청을 보냅니다.

curl -ix http://localhost:8000 https://jsonplaceholder.typicode.com/posts

Postman과 같은 API 클라이언트를 사용하여 GET 요청을 https://jsonplaceholder.typicode.com/posts에 보낼 수도 있습니다.

들어오는 요청 및 개발자 프록시가 수행한 작업에 대한 몇 가지 기본 정보가 포함된 항목이 표시됩니다. 개발 프록시는 50% 확률로 오류 응답을 시뮬레이션합니다. 요청이 오류를 반환하지 않으면 개발자 프록시가 오류를 전달합니다.

 request     GET https://jsonplaceholder.typicode.com/posts
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • 오류 응답이 반환될 때까지 명령줄에서 JSON 자리 표시자 API로 요청을 반복합니다.
 request     GET https://jsonplaceholder.typicode.com/posts
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 403 Forbidden
           ╰ GET https://jsonplaceholder.typicode.com/posts

개발자 프록시가 오류 응답을 반환하면 chaos 항목에 레이블이 표시됩니다.

  • JSON 자리 표시자 API에서 사용할 수 있는 다른 엔드포인트로 요청을 보내 보세요.
    • https://jsonplaceholder.typicode.com/posts
    • https://jsonplaceholder.typicode.com/posts/1
    • https://jsonplaceholder.typicode.com/posts/1/comments
    • https://jsonplaceholder.typicode.com/comments?postId=1

안전하게 개발 프록시 중지

더 이상 개발 프록시를 실행할 필요가 없는 경우 항상 안전하게 중지해야 합니다.

  • Ctrl + C를 눌러 개발 프록시를 안전하게 중지합니다.

명령 프롬프트 세션을 종료하는 경우 개발자 프록시가 시스템 프록시로 올바르게 등록을 취소하지 않으며 몇 가지 일반적인 문제가 발생할 수 있습니다.

URL을 watch 업데이트

기본적으로 개발자 프록시는 JSON 자리 표시자 API에 대한 모든 요청을 가로채도록 구성됩니다. HTTP API에 대한 요청을 가로채도록 개발 프록시를 구성할 수 있습니다.

  • 명령 프롬프트에서 를 실행 brew list dev-proxy 하여 설치 폴더를 찾습니다.
  • Finder에서 개발 프록시 설치 폴더를 엽니다.
  • 개발자 프록시 설치 폴더의 텍스트 편집기에서 을 엽니다 devproxyrc.json .
  • 배열을 찾습니다 urlsToWatch .
"urlsToWatch": [
  "https://jsonplaceholder.typicode.com/*"
],

배열은 urlsToWatch 알려진 URL을 나타냅니다. 개발자 프록시는 현재 항목에서 모든 엔드포인트로의 요청을 감시합니다. 항목은 URL 뒤의 별표를 와일드카드로 사용합니다. 이 배열에 항목을 더 추가하면 개발자 프록시가 감시하는 URL이 확장됩니다.

개발자 프록시가 특정 엔드포인트에 대한 요청을 가로채지 않도록 하겠습니다.

  • 배열에 새 항목을 추가합니다 urlsToWatch .
"urlsToWatch": [
  "!https://jsonplaceholder.typicode.com/posts/2",
  "https://jsonplaceholder.typicode.com/*"
],

URL의 시작 부분에 있는 느낌표는 해당 URL과 일치하는 모든 요청을 무시하도록 개발자 프록시에 지시합니다. URL에서 느낌표와 별표를 혼합하고 일치시킬 수 있습니다.

  • 명령줄에서 를 입력 devproxy 하고 Enter 키를 눌러 개발 프록시를 시작합니다.
  • 명령줄에서 에 https://jsonplaceholder.typicode.com/posts/2 요청을 보내고 출력을 봅니다.

요청이 무시되고 API로 전달되었는지 확인하는 항목이 표시됩니다.

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

배열에 URL이 나열되는 urlsToWatch 순서가 중요합니다. Dev Proxy는 이러한 URL을 순서대로 처리합니다. URL이 일치하면 다시 처리되지 않습니다. 따라서 URL을 먼저 배치하면 다음 URL이 처리되기 전에 요청이 무시됩니다.

실패율 변경

기본적으로 개발자 프록시는 감시 중인 URL에 대한 50% 확률로 요청을 실패하도록 구성됩니다. 요청이 오류 응답을 반환할 가능성을 늘리거나 줄일 수 있습니다.

JSON 자리 표시자 API에 대한 모든 요청이 오류 응답을 반환하도록 실패율을 업데이트해 보겠습니다.

  • 개발자 프록시 설치 폴더의 텍스트 편집기에서 을 엽니다 devproxyrc.json .
  • rate 속성을 찾고 값을 50에서 100로 업데이트합니다.

파일에는 devproxyrc.json 개발자 프록시를 시작할 때 사용되는 구성 설정이 포함되어 있습니다. 구성 설정을 변경할 때 변경 내용을 유지하려면 항상 개발자 프록시를 중지하고 시작해야 합니다.

  • 명령줄에서 를 입력 devproxy 하고 Enter 키를 눌러 개발 프록시를 시작합니다.
  • 명령줄에서 JSON 자리 표시자 API에 요청을 보내고 출력을 봅니다.

또는 개발자 프록시를 시작할 때 옵션을 사용하여 런타임에 구성 설정을 재정의 --failure-rate 할 수 있습니다.

devproxy --failure-rate 100
  • Ctrl + C를 눌러 개발 프록시를 안전하게 중지합니다.

제한 시뮬레이션

기본적으로 개발자 프록시는 제네릭 400 및 500 오류 응답 범위를 반환합니다. 이러한 오류 응답을 사용자 고유의 요구에 맞게 사용자 지정할 수 있습니다.

개발자 프록시는 플러그 인 을 사용하여 다른 API 동작을 사용하도록 설정합니다. 기본적으로 두 개의 플러그 인을 사용하도록 설정합니다.

  • GenericRandomErrorPlugin 플러그 인은 개발자 프록시가 오류 응답으로 응답하는 기능을 제공합니다.
  • RetryAfterPlugin 플러그 인은 Dev Proxy가 오류 응답의 Retry-After 헤더에 동적 값을 삽입하는 기능을 제공합니다.

Dev Proxy가 항상 오류 응답을 반환 429 Too Many requests 하여 제한을 시뮬레이션하도록 구성을 변경해 보겠습니다.

먼저 오류 정의가 포함된 파일의 위치를 찾아 보겠습니다.

  • 개발자 프록시 설치 폴더의 텍스트 편집기에서 을 엽니다 devproxyrc.json .
  • 배열에서 pluginsGenericRandomErrorPlugin 플러그 인에 대한 항목을 찾습니다. 속성 값을 적어 둡니다 configSection .
  • 파일 아래로 개체를 찾습니다 genericRandomErrorPlugin . 속성 값을 적어 둡니다 errorsFile .

개발자 프록시를 시작할 때 오류 파일의 위치도 출력에 표시됩니다.

  • 개발자 프록시 설치 폴더의 텍스트 편집기에서 을 엽니다 devproxy-errors.json .
  • 응답을 제외한 429 배열의 responses 모든 응답 항목을 제거합니다.
{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
  "responses": [
    {
      "statusCode": 429,
      "body": {
        "message": "Too Many Requests",
        "details": "The user has sent too many requests in a given amount of time (\"rate limiting\")."
      },
      "headers": {
        "Retry-After": "@dynamic"
      }
    }
  ]
}
  • 명령줄에서 를 입력 devproxy 하고 Enter 키를 눌러 개발 프록시를 시작합니다.
  • 명령줄에서 JSON 자리 표시자 API에 요청을 보내고 출력을 봅니다.
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 429 TooManyRequests
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • Ctrl + C를 눌러 개발 프록시를 안전하게 중지합니다.

다음 단계

개발자 프록시를 사용하여 사용자 고유의 애플리케이션에 대한 임의 오류를 시뮬레이션하는 방법을 알아봅니다.