다음을 통해 공유


모의 응답

개발자 프록시를 사용하는 것이 API를 모의하는 가장 쉬운 방법입니다. 프런트 엔드를 빌드하고 API가 아직 준비되지 않았든, 백 엔드를 외부 서비스와 통합하거나 다른 응답으로 애플리케이션을 테스트하려는 경우 개발자 프록시는 API 응답을 시뮬레이션하는 데 도움이 될 수 있습니다. 개발자 프록시를 사용하는 데 유용한 점은 애플리케이션 코드를 변경할 필요가 없다는 것입니다. 애플리케이션이 상호 작용하는 모든 API에 대한 모의 응답을 정의하고 개발자 프록시는 요청을 가로채 정의한 모의 응답으로 응답합니다.

API 응답을 모의하려면 다음 두 가지 작업을 수행해야 합니다.

  1. 모의 응답을 사용하여 파일을 만듭니다.
  2. 모의 응답을 사용하도록 개발 프록시를 구성합니다.

Visual Studio Code를 사용하는 경우 개발자 프록시 도구 키트 확장을 설치하는 것이 좋습니다. 개발자 프록시 구성 파일 작업을 크게 간소화합니다.

모의 응답을 사용하여 파일 만들기

개발자 프록시는 MockResponsePlugin사용하여 API 응답을 모의합니다. 플러그 인을 사용하면 모의 응답 집합을 정의할 수 있습니다. 별도의 파일에서 모의 객체를 정의합니다. 다음 코드 조각은 https://jsonplaceholder.typicode.com/posts/1GET 요청에 대한 간단한 모의 응답을 보여 줍니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://jsonplaceholder.typicode.com/posts/1",
        "method": "GET"
      },
      "response": {
        "statusCode": 200,
        "body": {
          "userId": 1,
          "id": 1,
          "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
          "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
        },
        "headers": [
          {
            "name": "Date",
            "value": "Wed, 19 Feb 2025 09:03:37 GMT"
          },
          {
            "name": "Content-Type",
            "value": "application/json; charset=utf-8"
          },
          {
            "name": "Content-Length",
            "value": "292"
          },
          // [...] trimmed for brevity
        ]
      }
    }
  ]
}

모의 파일을 수동으로 만드는 대신 MockGeneratorPlugin 사용하여 가로채는 요청에 따라 모의 파일을 생성할 수 있습니다.

우선 순위

개발자 프록시는 모의 파일에서 정의한 순서대로 모의를 일치시킵니다. 동일한 URL 및 메서드를 사용하여 여러 응답을 정의하는 경우 개발자 프록시는 일치하는 첫 번째 응답을 사용합니다.

다음 구성을 사용할 경우, 프록시는 GET 모든 요청에 대해 https://graph.microsoft.com/v1.0/me/photo으로 500 Internal Server Error를 사용하여 응답합니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/mockresponseplugin.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 500
      }
    },
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/me/photo",
        "method": "GET"
      },
      "response": {
        "statusCode": 404
      }
    }
  ]
}

와일드카드 지원

개발자 프록시는 URL 속성에서 와일드카드 사용을 지원합니다. 별표 문자(*)를 사용하여 URL의 일련의 문자를 일치시킬 수 있습니다.

다음 구성을 사용하는 경우 개발자 프록시는 모든 요청에 응답하여 동일한 응답으로 모든 사용자의 프로필을 가져옵니다.

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/users/*"
  },
  "response": {
    "body": {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
      "businessPhones": ["+1 425 555 0109"],
      "displayName": "Adele Vance",
      "givenName": "Adele",
      "jobTitle": "Product Marketing Manager",
      "mail": "AdeleV@M365x214355.onmicrosoft.com",
      "mobilePhone": null,
      "officeLocation": "18/2111",
      "preferredLanguage": "en-US",
      "surname": "Vance",
      "userPrincipalName": "AdeleV@M365x214355.onmicrosoft.com",
      "id": "87d349ed-44d7-43e1-9a83-5f2406dee5bd"
    }
  }
}

다음 구성을 사용하는 경우 개발자 프록시는 사용자의 사진 이진 파일을 가져올 것을 요청할 때 디스크에서 동일한 이미지를 반환합니다.

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
  },
  "response": {
    "body": "@picture.jpg",
    "headers": [
      {
        "name": "content-type",
        "value": "image/jpeg"
      }
    ]
  }
}

다음 구성을 사용하면 쿼리 문자열 매개 변수를 사용하여 현재 사용자의 프로필을 가져오도록 요청할 때 Dev Proxy가 동일한 응답을 반환합니다.

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me?*"
  },
  "response": {
    "body": {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
      "businessPhones": [
        "+1 412 555 0109"
      ],
      "displayName": "Megan Bowen",
      "givenName": "Megan",
      "jobTitle": "Auditor",
      "mail": "MeganB@M365x214355.onmicrosoft.com",
      "mobilePhone": null,
      "officeLocation": "12/1110",
      "preferredLanguage": "en-US",
      "surname": "Bowen",
      "userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
      "id": "48d31887-5fad-4d73-a9f5-3c356e68a038"
    }
  }
},

파일 내용으로 응답

모의 파일을 정리하고 구성하려면 응답 내용을 별도의 파일에 저장하고 모의 파일에서 참조할 수 있습니다. 개발자 프록시에게 파일에서 모의 응답 본문을 로드하도록 지시하려면, body 속성을 @으로 설정하고 그 뒤에 모의 파일을 기준으로 상대적인 파일 경로를 지정합니다.

예를 들어 다음 모의 응답 구성은 모의 파일과 동일한 폴더에 있는 response.json 파일의 내용으로 https://graph.microsoft.com/v1.0/me 요청에 응답하도록 개발자 프록시에 지시합니다.

{
  "request": {
    "url": "https://graph.microsoft.com/v1.0/me",
    "method": "GET"
  },
  "response": {
    "body": "@response.json",
    "headers": [
      {
        "name": "content-type",
        "value": "application/json; odata.metadata=minimal"
      }
    ]
  }
}

@-토큰을 사용하면 텍스트와 이진 파일에서 작동합니다.

모의 응답을 사용하도록 개발 프록시 구성

모의 파일을 만든 후 모의 응답을 사용하도록 개발 프록시를 구성해야 합니다. 모의 응답에 대한 개발자 프록시를 구성하려면 devproxyrc 파일의 플러그 인 목록에 MockResponsePlugin 추가합니다.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "mockResponsePlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "mockResponsePlugin": {
    "mocksFile": "mocks.json"
  },
  "logLevel": "information",
  "newVersionNotification": "stable",
  "showSkipMessages": true
}

먼저 플러그 인 목록에 MockResponsePlugin 추가합니다. 모의 파일의 경로를 지정하는 구성 섹션에 대한 참조를 포함합니다.

개발자 프록시를 시작하면 모의 파일을 읽고 모의 응답을 사용하여 정의된 모의 항목과 일치하는 요청에 응답합니다.

비모의 요청 지원

개발자 프록시는 프록시가 모의되지 않은 요청을 가로챌 때 오류를 발생시키는 것을 지원합니다. 방해받지 않는 요청을 실패하는 기능은 모의 파일에서 놓친 요청을 식별하는 데 유용합니다.

이 기능을 사용하려면, devproxyrc 파일에서 blockUnmockedRequests 설정을 추가한 후 MockResponsePlugin 구성 섹션에서 활성화하십시오.

{
  "mocksPlugin": {
    "mocksFile": "mocks.json",
    "blockUnmockedRequests": true
  }
}

개발자 프록시가 모의할 수 없는 요청을 가로채면 502 Bad Gateway 응답을 반환합니다.

다음 단계

MockResponsePlugin에 대해 자세히 알아봅니다.

샘플

관련 개발 프록시 샘플도 참조하세요.