Aracılığıyla paylaş


Sahte yanıtlar

Bir bakışta
Hedef: Gerçek API'yi çağırmadan önceden tanımlanmış API yanıtlarını döndürme
Süre: 10 dakika
Eklentiler:MockResponsePlugin
Önkoşullar:Geliştirme Ara Sunucusunu Ayarlama

Geliştirme Proxy'si kullanmak, API'yi taklit etmenin en kolay yoludur. Ön ucu oluştururken API henüz hazır olmasa da arka ucunuzu bir dış hizmetle tümleştirmeniz veya uygulamanızı farklı yanıtlarla test etmek istemeniz fark etmeksizin Dev Proxy API yanıtlarının simülasyonunu yapmanıza yardımcı olabilir. Geliştirme Proxy'sini kullanmanın en iyi özelliği, uygulama kodunuzda herhangi bir değişiklik gerektirmemesidir. Uygulamanızın etkileşimde olduğu tüm API'ler için sahte yanıtlar tanımlarsınız ve Geliştirme Proxy'si istekleri durdurur ve tanımladığınız sahte yanıtlarla yanıt verir.

API yanıtlarıyla dalga geçmek için iki şey yapmanız gerekir:

  1. Sahte yanıtlar içeren bir dosya oluşturun.
  2. Sahte yanıtları kullanmak için Geliştirme Proxy'sini yapılandırın.

Bahşiş

Visual Studio Code kullanıyorsanız Dev Proxy Toolkit uzantısını yüklemeyi göz önünde bulundurun. Dev Proxy yapılandırma dosyalarıyla çalışmayı önemli ölçüde basitleştirir.

Bir dosya oluştur ve sahte yanıtlar ekle

Dev Proxy, MockResponsePluginkullanarak API yanıtlarıyla dalga geçer. Eklenti, bir dizi sahte yanıt tanımlamanızı sağlar. Sahteleri ayrı bir dosyada tanımlarsınız. Aşağıdaki kod parçacığı, GETiçin https://jsonplaceholder.typicode.com/posts/1 isteğine basit bir yanıt oluşturmayı gösterir.

Dosya: mocks.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.mocksfile.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"
          }
        ]
      }
    }
  ]
}

Bahşiş

Sahteler dosyasını el ile oluşturmak yerine, MockGeneratorPlugin kullanarak kesilen isteklere göre sahteler dosyasını oluşturabilirsiniz.

Sipariş önceliği

Dev Proxy, sahteleri sahteler dosyasında tanımladığınız sırayla eşleştirir. Aynı URL ve yöntemle birden çok yanıt tanımlarsanız, Dev Proxy ilk eşleşen yanıtı kullanır.

Aşağıdaki yapılandırmayı kullandığınızda, proxy GETile https://graph.microsoft.com/v1.0/me/photo'e yönlendirilen tüm 500 Internal Server Error isteklerine yanıt verir.

Dosya: mocks.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.mocksfile.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
      }
    }
  ]
}

Joker karakter desteği

Dev Proxy, URL özelliğinde joker karakter kullanımını destekler. URL'deki herhangi bir karakter serisiyle eşleştirmek için yıldız karakterini (*) kullanabilirsiniz.

Aşağıdaki yapılandırmayı kullandığınızda, Geliştirme Proxy'si aynı yanıtla herhangi bir kullanıcının profilini almak için tüm isteklere yanıt verir.

Dosya: mocks.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "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şağıdaki yapılandırmayı kullandığınızda, herhangi bir kullanıcının fotoğrafının ikili dosyasını almak istediğinizde Dev Proxy diskten aynı görüntüyü döndürür.

Dosya: mocks.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "request": {
        "url": "https://graph.microsoft.com/v1.0/users/*/photo/$value"
      },
      "response": {
        "body": "@picture.jpg",
        "headers": [
          {
            "name": "content-type",
            "value": "image/jpeg"
          }
        ]
      }
    }
  ]
}

Aşağıdaki yapılandırmayı kullandığınızda, Herhangi bir sorgu dizesi parametresiyle geçerli kullanıcının profilini almak istediğinizde Dev Proxy aynı yanıtı döndürür.

Dosya: mocks.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "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"
        }
      }
    }
  ]
}

Dosyanın içeriğiyle yanıt verme

Mock dosyanızı temiz ve düzenli tutmak için yanıtın içeriğini ayrı bir dosyada depolayabilir ve mock dosyasına referans verebilirsiniz. Dev Proxy'ye yönerge vermek için, bir dosyadan sahte yanıt gövdesini yüklemek için body özelliğini @ olarak ayarlayın ve ardından sahteler dosyasına göre dosya yolunu takip edin.

Örneğin, aşağıdaki sahte yanıt yapılandırması, Dev Proxy'ye sahte dosyayla aynı klasörde bulunan https://graph.microsoft.com/v1.0/me dosyasının içeriğiyle response.json isteğine yanıt vermesini sağlar.

Dosya: mocks.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "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"
          }
        ]
      }
    }
  ]
}

@belirtecini kullanmak, metin veikili dosyalarıyla çalışır.

Sahte yanıtları kullanmak için Geliştirme Proxy'sini yapılandırma

Mock dosyasını oluşturduktan sonra, mock yanıtları kullanmak için Dev Proxy'i yapılandırmanız gerekir. Dev Proxy'yi yanıtları taklit etmek için yapılandırmak üzere, MockResponsePlugindevproxyrc dosyasındaki eklenti listesine ekleyin.

Dosya: devproxyrc.json

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

İlk olarak, MockResponsePlugin eklenti listesine eklersiniz. Yapılandırma bölümüne, mock dosyanızın yolunu belirttiğiniz bir başvuru eklersiniz.

Dev Proxy'yi başlattığınızda, mock dosyasını okur ve tanımlanan eşleşmelerle uyumlu isteklere yanıt vermek için mock yanıtları kullanır.

Unmocked istek desteği

Geliştirme Proxy'si, proxy'nin maketlenmemiş bir isteği kesmesi durumunda hata fırlatma işlemini destekler. Taklit edilmemiş isteklerin başarısız olma özelliği, mock dosyanızda kaçırdığınız istekleri tanımlamak için kullanışlıdır.

Bu özelliği etkinleştirmek için, blockUnmockedRequests dosyasındaki MockResponsePlugin yapılandırma bölümünü için ayarını ekleyin ve etkinleştirin.

Dosya: devproxyrc.json

{
  "mocksPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
    "mocksFile": "mocks.json",
    "blockUnmockedRequests": true
  }
}

Dev Proxy, taklit edemediği bir isteği yakaladığında, bir 502 Bad Gateway yanıtı döndürür.

Sonraki adım

MockResponsePlugin hakkında daha fazla bilgi edinin.

Örnekler

Ayrıca ilgili Dev Proxy örneklerine de bakın:

Ayrıca bakınız