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:
- Utwórz plik z pozornymi odpowiedziami.
- 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: