Udostępnij za pośrednictwem


Próby odpowiedzi

Używanie Dev Proxy to najprostszy sposób pozorowania interfejsu API. Niezależnie od tego, czy tworzysz front-end, a interfejs API nie jest jeszcze gotowy, czy musisz zintegrować swoje zaplecze z usługą zewnętrzną, albo chcesz przetestować aplikację z różnymi odpowiedziami, Dev Proxy może pomóc w symulacji odpowiedzi API. To, co jest wspaniałe w używaniu Dev Proxy, to fakt, że nie wymaga żadnych zmian w kodzie aplikacji. Definiujesz pozorne odpowiedzi dla dowolnego interfejsu API, z którym aplikacja wchodzi w interakcję, a serwer proxy deweloperów przechwytuje żądania i odpowiada na zdefiniowane przez Ciebie pozorne odpowiedzi.

Aby symulować odpowiedzi API, należy wykonać dwie czynności:

  1. Utwórz plik z pozornymi odpowiedziami.
  2. Skonfiguruj Dev Proxy, aby używać przykładowych odpowiedzi.

Napiwek

Jeśli używasz programu Visual Studio Code, rozważ zainstalowanie rozszerzenia zestawu narzędzi Dev Proxy Toolkit. Znacznie upraszcza pracę z plikami konfiguracji Dev Proxy.

Utwórz plik z przykładowymi odpowiedziami

Proxy deweloperskie symuluje odpowiedzi interfejsu API przy użyciu MockResponsePlugin. Wtyczka umożliwia zdefiniowanie zestawu pozornych odpowiedzi. Definiujesz makiety w oddzielnym pliku . Poniższy fragment kodu przedstawia prostą symulowaną odpowiedź dla żądania GET do https://jsonplaceholder.typicode.com/posts/1.

{
  "$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
        ]
      }
    }
  ]
}

Napiwek

Zamiast ręcznie tworzyć plik makiet, można użyć MockGeneratorPlugin do wygenerowania pliku makiet na bazie przechwyconych żądań.

Pierwszeństwo kolejności

Proxy deweloperski dopasowuje makiety w kolejności, w jakiej definiujesz je w plikach makiet. Jeśli zdefiniujesz wiele odpowiedzi przy użyciu tego samego adresu URL i metody, serwer proxy dewelopera używa pierwszej pasującej odpowiedzi.

W przypadku korzystania z następującej konfiguracji serwer proxy odpowiada na wszystkie żądania GET do https://graph.microsoft.com/v1.0/me/photo za pomocą 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
      }
    }
  ]
}

Obsługa symboli wieloznacznych

Serwer proxy Dev obsługuje korzystanie z symboli wieloznacznych we właściwości adresu URL. Możesz użyć znaku gwiazdki (*), aby dopasować dowolną serię znaków w adresie URL.

Jeśli używasz następującej konfiguracji, Proxy deweloperski odpowiada na wszystkie żądania dotyczące uzyskania profilu dowolnego użytkownika tą samą odpowiedzią.

{
  "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"
    }
  }
}

Korzystając z poniższej konfiguracji, Dev Proxy zwraca ten sam obraz z dysku przy próbie pobrania binarnego pliku zdjęcia dowolnego użytkownika.

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

Jeśli używasz następującej konfiguracji, serwer proxy deweloperów zwraca tę samą odpowiedź, gdy żądasz pobrania profilu bieżącego użytkownika z dowolnym parametrem ciągu zapytania.

{
  "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"
    }
  }
},

Odpowiadanie na zawartość pliku

Aby plik makiety był czysty i zorganizowany, możesz przechowywać zawartość odpowiedzi w osobnym pliku i odwoływać się do niego w pliku makiety. Aby poinstruować Dev Proxy, aby załadował symulowaną treść odpowiedzi z pliku, ustaw właściwość body na @, a następnie podaj ścieżkę pliku względną do pliku symulacji.

Na przykład następująca pozorna konfiguracja odpowiedzi powoduje, że serwer proxy deweloperów odpowie na dowolne żądanie https://graph.microsoft.com/v1.0/me zawartością pliku response.json znajdującego się w tym samym folderze co plik makiety.

{
  "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"
      }
    ]
  }
}

Używanie tokena @działa z plikami tekstowymi i binarnymi .

Konfiguracja serwera proxy deweloperskiego do korzystania z symulowanych odpowiedzi

Po utworzeniu pliku mocków należy skonfigurować Dev Proxy, aby używał mockowych odpowiedzi. Aby skonfigurować serwer proxy deweloperów w celu pozorowania odpowiedzi, dodaj MockResponsePlugin do listy wtyczek w pliku devproxyrc.

{
  "$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
}

Najpierw należy dodać MockResponsePlugin do listy wtyczek. Dołącz odwołanie do jego sekcji konfiguracji, w której określasz ścieżkę do pliku makiety.

Po uruchomieniu Dev Proxy odczytuje plik z symulacjami i używa symulowanych odpowiedzi do odpowiadania na żądania odpowiadające zdefiniowanym symulacjom.

Obsługa żądań niezadokuowanych

Serwer proxy deweloperów obsługuje zgłaszanie błędu, gdy serwer proxy przechwytuje niezadokowane żądanie. Możliwość niesymulowanych żądań jest przydatna w celu identyfikowania żądań, które przeoczyłeś w pliku z symulacjami.

Aby włączyć tę funkcję, dodaj ustawienie blockUnmockedRequests do sekcji MockResponsePlugin w pliku konfiguracyjnym devproxyrc i włącz je.

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

Gdy serwer proxy deweloperów przechwytuje żądanie, którego nie może symulować, zwraca odpowiedź 502 Bad Gateway.

Następny krok

Dowiedz się więcej o mockResponsePlugin.

Próbki

Zobacz również powiązane przykłady Dev Proxy: