Megosztás a következőn keresztül:


Mock válaszok

Az API-k szimulálásának legegyszerűbb módja a Dev Proxy használata. Akár az előtérrendszert készíti, akár az API még nem áll készen, integrálnia kell a háttérrendszert egy külső szolgáltatással, vagy különböző válaszokkal szeretné tesztelni az alkalmazást, a Dev Proxy segíthet az API-válaszok szimulálásában. A Dev Proxy használatának nagyszerű módja, hogy nincs szükség az alkalmazáskód módosítására. Az alkalmazás által kezelt api-k utánzatválaszait definiálhatja, a Dev Proxy pedig elfogja a kéréseket, és válaszol a megadott szimulált válaszokra.

Az API-válaszok szimulálásához két dolgot kell elvégeznie:

  1. Hozzon létre egy fájlt a modellválaszokkal.
  2. Konfigurálja a fejlesztői proxyt a modellválaszok használatára.

Borravaló

A Visual Studio Code használata esetén érdemes lehet telepíteni a Dev Proxy Toolkit bővítményt. Jelentősen leegyszerűsíti a Dev Proxy konfigurációs fájljainak használatát.

Fájl létrehozása modellválaszokkal

A fejlesztői proxy az API-válaszokat a MockResponsePluginhasználatával szimulálja. A beépülő modul lehetővé teszi a modellválaszok egy készletének definiálását. A maketteket egy különálló fájlbandefiniálhatja. Az alábbi kódrészlet bemutat egy egyszerű mock választ egy GET kérésre https://jsonplaceholder.typicode.com/posts/1-hez.

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

Borravaló

Ahelyett, hogy manuálisan hozza létre a mocks fájlt, a MockGeneratorPlugin használatával létrehozhatja a mocks fájlt az elfogott kérések alapján.

Rendezési sorrend

A fejlesztői proxy a mokkákat abban a sorrendben illeszti, amelyben a mokkafájlban definiálja őket. Ha több választ határoz meg ugyanazzal az URL-címmel és módszerrel, a Dev Proxy az első egyező választ használja.

A következő konfiguráció használatakor a proxy az GET kérésekre https://graph.microsoft.com/v1.0/me/photo-hez a 500 Internal Server Errorválaszt adja.

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

Helyettesítő karakterek támogatása

A Dev Proxy támogatja a helyettesítő karakterek használatát az URL-tulajdonságban. A csillag karakterrel (*) az URL-címben szereplő karakterek tetszőleges sorozatának megfeleltethető.

Ha a következő konfigurációt használja, a Dev Proxy minden kérésre válaszol, hogy minden felhasználó profilját ugyanazzal a válaszsal kapja meg.

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

A következő konfiguráció használatakor a Dev Proxy ugyanazt a lemezképet adja vissza, amikor egy felhasználó fényképének bináris fájlját kéri le.

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

A következő konfiguráció használatakor a Dev Proxy ugyanazt a választ adja vissza, amikor az aktuális felhasználó profiljának lekérdezési sztringparaméterrel való lekérését kéri.

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

Válasz fájl tartalmával

A modellfájl tisztán és rendszerezetten tartásához a válasz tartalmát egy külön fájlban tárolhatja, és hivatkozhat rá a modellfájlban. A Dev Proxy utasítása érdekében, hogy az állszimulációs választörzset fájlból töltse be, állítsa be a body tulajdonságot @-re, majd adja meg a fájlhoz viszonyított elérési útvonalat a mock fájlhoz viszonyítva.

A következő modell válaszkonfigurációja például arra utasítja a Dev Proxyt, hogy válaszoljon a https://graph.microsoft.com/v1.0/me kérésekre a response.json fájl tartalmával, amely ugyanabban a mappában található, mint a makettfájl.

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

A @-token használata szöveggel és bináris fájlokkal működik.

Fejlesztői proxy konfigurálása a modellválaszok használatára

A modellfájl létrehozása után konfigurálnia kell a Dev Proxyt a modellválaszok használatára. Ha a Dev Proxyt a válaszok szimulálására szeretné konfigurálni, adja hozzá a MockResponsePlugin a devproxyrc fájl beépülő moduljainak listájához.

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

Először adja hozzá a MockResponsePlugin-t a beépülő modulok listájához. Adjon meg egy hivatkozást a konfigurációs szakaszra, ahol megadhatja a modellfájl elérési útját.

A Dev Proxy indításakor a rendszer felolvassa a makettfájlt, és a modellválaszokkal válaszol a megadott modellekkel egyező kérésekre.

Nem imitált kérés támogatása

A fejlesztői proxy támogatja a hiba küldését, ha a proxy elfog egy nem kicsomagolt kérést. A nem kicsomagolt kérések sikertelen végrehajtásának lehetősége hasznos a modellfájlban kihagyott kérések azonosításához.

A funkció bekapcsolásához adja hozzá és engedélyezze a blockUnmockedRequests beállítást a devproxyrc fájl MockResponsePlugin konfigurációs szakaszában.

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

Amikor a Dev Proxy elfog egy kérelmet, amelyet nem tud kipockázni, 502 Bad Gateway választ ad vissza.

Következő lépés

További információ a MockResponsePluginről.

Minták

Lásd még a kapcsolódó Dev Proxy-mintákat: