Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yanıtların simülasyonunu oluşturur.
Eklenti örneği tanımı
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Yapılandırma örneği
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Yapılandırma özellikleri
| Mülkiyet | Açıklama | Varsayılan |
|---|---|---|
mocksFile |
Sahte yanıtlar içeren dosyanın yolu | mocks.json |
blockUnmockedRequests |
Sahte olmayan istekler için yanıt döndürme 502 Bad Gateway |
false |
Komut satırı seçenekleri
| İsim | Açıklama | Varsayılan |
|---|---|---|
-n, --no-mocks |
Sahte istekleri yüklemeyi devre dışı bırakma | false |
--mocks-file |
Sahte yanıtlar içeren dosyanın yolu | - |
Sahte dosya örnekleri
Aşağıda sahte nesnelere örnekler verilmiştir.
Gövdeyle yanıt verme
200 Tamam yanıtı ve JSON gövdesi ile bir isteğe yanıt.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me",
"method": "GET"
},
"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"
},
"headers": [
{
"name": "content-type",
"value": "application/json; odata.metadata=minimal"
}
]
}
}
]
}
Hatayla yanıt verme
404 Bulunamadı yanıtıyla bir isteği yanıtlar.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/me/photo",
"method": "GET"
},
"response": {
"statusCode": 404
}
}
]
}
İkili verilerle yanıt verme
Disk üzerindeki bir dosyadan yüklenen ikili görüntüyle bir isteğe yanıt verin.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users/*/photo/$value",
"method": "GET"
},
"response": {
"body": "@picture.jpg",
"headers": [
{
"name": "content-type",
"value": "image/jpeg"
}
]
}
}
]
}
İstek üzerine nth yanıt verme
bir isteği yalnızca ikinci kez çağrıldıktan sonra yanıtlayın.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/external/connections/*/operations/*",
"method": "GET",
"nth": 2
},
"response": {
"statusCode": 200,
"body": {
"id": "1.neu.0278337E599FC8DBF5607ED12CF463E4.6410CCF8F6DB8758539FB58EB56BF8DC",
"status": "completed",
"error": null
}
}
}
]
}
İstek gövdesiyle eşleşen yanıt
Gövdede belirli bir dize içeren bir isteği yanıtlar.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://login.microsoftonline.com/fa15d692-e9c7-4460-a743-29f29522229/oauth2/v2.0/token",
"method": "POST",
"bodyFragment": "scope=https%3A%2F%2Fapi.contoso.com%2FDocuments.Read"
},
"response": {
"headers": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
}
],
"body": {
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSU..."
}
}
}
]
}
Yanıt olarak istek verilerini yansıtma
Yer tutucuları kullanarak @request.body.* istek gövdesindeki değerleri yansıtan verilerle yanıt verin.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.2.0/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "https://graph.microsoft.com/v1.0/users",
"method": "POST"
},
"response": {
"statusCode": 201,
"body": {
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "12345678-1234-1234-1234-123456789abc",
"businessPhones": "@request.body.businessPhones",
"displayName": "@request.body.displayName",
"givenName": "@request.body.givenName",
"jobTitle": "@request.body.jobTitle",
"mail": "@request.body.mail",
"userPrincipalName": "@request.body.userPrincipalName",
"accountEnabled": "@request.body.accountEnabled",
"createdDateTime": "2024-01-15T10:30:00Z"
},
"headers": [
{
"name": "Content-Type",
"value": "application/json; odata.metadata=minimal"
},
{
"name": "Location",
"value": "https://graph.microsoft.com/v1.0/users/12345678-1234-1234-1234-123456789abc"
}
]
}
}
]
}
Aşağıdaki istek göz önünde bulundurulduğunda:
POST https://graph.microsoft.com/v1.0/users
Content-Type: application/json
{
"displayName": "Megan Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"accountEnabled": true,
"givenName": "Megan",
"surname": "Bowen",
"jobTitle": "Product Manager"
}
Yanıt:
HTTP/1.1 200 Connection Established
Content-Length: 0
HTTP/1.1 201 Created
Cache-Control: no-store
x-ms-ags-diagnostic:
Strict-Transport-Security:
request-id: 12345678-1234-1234-1234-123456789abc
client-request-id: 12345678-1234-1234-1234-123456789abc
Date: 9/10/2025 10:28:35 AM
Content-Type: application/json; odata.metadata=minimal
Location: https://graph.microsoft.com/v1.0/users/12345678-1234-1234-1234-123456789abc
OData-Version: 4.0
Content-Length: 648
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id": "12345678-1234-1234-1234-123456789abc",
"businessPhones": null,
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Product Manager",
"mail": null,
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null,
"surname": "Bowen",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"accountEnabled": true,
"createdDateTime": "2024-01-15T10:30:00Z",
"department": null,
"companyName": null,
"city": null,
"country": null,
"postalCode": null,
"state": null,
"streetAddress": null,
"usageLocation": null
}
Sahte dosya özellikleri
| Mülkiyet | Açıklama | Gerekli |
|---|---|---|
request |
Yanıt verme isteğini tanımlayan request nesnesi | evet |
response |
Döndürülecek yanıtı tanımlayan yanıt nesnesi | evet |
İstek nesnesi
Her istek aşağıdaki özelliklere sahiptir:
| Mülkiyet | Açıklama | Gerekli | Varsayılan değer | Örnek değer |
|---|---|---|---|---|
url |
Yanıt vermek için api uç noktasının mutlak URL'si | evet | https://jsonplaceholder.typicode.com/posts |
|
method |
İsteği ile eşleştirmek için kullanılan HTTP fiili url |
Hayır | GET |
GET |
nth |
Proxy'nin yalnızca isteğin n. kez araya girilmesinden sonra yanıt vermesi gerektiğini belirler | Hayır | 2 |
|
bodyFragment |
İstek gövdesinde bulunması gereken bir dize | Hayır | foo |
Açıklamalar
URL'deki herhangi bir karakter serisini * eşleştirmek istiyorsanız özelliğinde yıldız işareti (url) kullanın. Örneğin, https://jsonplaceholder.typicode.com/* ve https://jsonplaceholder.typicode.com/postsile eşleşirhttps://jsonplaceholder.typicode.com/comments. Çalışma zamanında Dev Proxy her * biri normal ifadeye .*dönüştürür.
Sahteleri tanımlarken, önce en özel sahteleri yerleştirin. Örneğin, biri için ve biri için https://jsonplaceholder.typicode.com/postshttps://jsonplaceholder.typicode.com/*olmak üzere iki sahte modeliniz varsa ilk sahteyi önce yerleştirin. Aksi takdirde, Dev Proxy ilk olarak ikinci sahte ile eşleşir ve tüm istekler için https://jsonplaceholder.typicode.com/* yanıtı döndürür.
Aynı istek URL'sine nth farklı bir göndermeniz gerekiyorsa özelliğini kullanın. Örneğin, uzun süre çalışan bir işlemin benzetimini yapmak için bunu kullanın. API'yi ilk kez çağırdığınızda, ileti içeren bir inprogress yanıt döndürür. API'yi ikinci kez çağırdığınızda, iletiyle completed birlikte bir yanıt döndürür. Özelliği hakkında nth daha fazla bilgi için bkz . Sahte n. istek.
bodyFragment özelliğini kullanarak, istekleri gövde içeriğine göre eşleştirebilirsiniz. Örneğin, gövdesindeki dizeyi foo içeren istekleri eşleştirmek istiyorsanız özelliğini olarak bodyFragmentayarlayınfoo. Geliştirme Proxy'si yalnızca dışındaki bodyFragmentistekler için kullanırGET.
Yanıt nesnesi
Her yanıt aşağıdaki özelliklere sahiptir:
| Mülkiyet | Açıklama | Gerekli | Varsayılan değer | Örnek değer |
|---|---|---|---|---|
body |
İsteğin yanıtı olarak gönderilecek gövde | Hayır | boş | { "foo": "bar" } |
statusCode |
Yanıt HTTP durum kodu | Hayır | 200 |
404 |
headers |
Yanıta eklenecek üst bilgi dizisi | Hayır | boş | [{ name: "content-type", "value": "application/json" }] |
Açıklamalar
İkili veri döndürmek istiyorsanız, özelliğini sahte dosyaya göre dosya yolu ile body başlayan bir dize değeri olarak ayarlayın@. Örneğin, @picture.jpg sahte dosyayla picture.jpg aynı dizinde dosyada depolanan görüntüyü döndürür.
Yanıttaki istek verilerini yansıtmak için yanıt gövdesindeki yer tutucuları kullanın @request.body.* . Örneğin, @request.body.displayName istek gövdesinden özelliğinin değerini displayName döndürür. Bu özellik, iç içe nesneler ve dizilerle çalışır ve gelen istek verilerini yansıtan dinamik yanıtlar oluşturmanıza olanak sağlar. Yer tutucu değişimi dizeler, sayılar, boole'lar ve karmaşık nesneler gibi çeşitli JSON değer türlerini destekler.