Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mensimulasikan respons.
Definisi instans plugin
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
Contoh konfigurasi
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json"
}
}
Properti konfigurasi
| Harta benda | Deskripsi | Bawaan |
|---|---|---|
mocksFile |
Jalur ke file yang berisi respons tiruan | mocks.json |
blockUnmockedRequests |
Respons pengembalian 502 Bad Gateway untuk permintaan yang tidak ditiru |
false |
Opsi Baris Perintah
| Nama | Deskripsi | Bawaan |
|---|---|---|
-n, --no-mocks |
Menonaktifkan pemuatan permintaan tiruan | false |
--mocks-file |
Jalur ke file yang berisi respons tiruan | - |
Contoh file tiruan
Berikut ini adalah contoh objek tiruan.
Merespons dengan isi
Respons terhadap permintaan dengan respons 200 OK dan isi JSON.
{
"$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"
}
]
}
}
]
}
Merespons dengan kesalahan
Tanggapi permintaan dengan respons 404 Tidak Ditemukan.
{
"$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
}
}
]
}
Merespons dengan data biner
Tanggapi permintaan dengan gambar biner yang dimuat dari file pada disk.
{
"$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"
}
]
}
}
]
}
Merespons sesuai nth permintaan
Tanggapi permintaan hanya setelah kedua kalinya dipanggil.
{
"$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
}
}
}
]
}
Merespons pencocokan isi permintaan
Tanggapi permintaan yang berisi string tertentu dalam isi.
{
"$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..."
}
}
}
]
}
Mencerminkan data permintaan sebagai respons
Merespons dengan data yang mencerminkan nilai dari isi permintaan menggunakan @request.body.* tempat penampung.
{
"$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"
}
]
}
}
]
}
Mengingat permintaan berikut:
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"
}
Responsnya adalah:
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
}
Properti file tiruan
| Harta benda | Deskripsi | Diperlukan |
|---|---|---|
request |
Objek permintaan yang menentukan permintaan untuk merespons | Ya |
response |
Objek respons yang menentukan respons untuk dikembalikan | Ya |
Objek permintaan
Setiap permintaan memiliki properti berikut:
| Harta benda | Deskripsi | Diperlukan | Nilai standar | Nilai sampel |
|---|---|---|---|---|
url |
URL absolut ke titik akhir API untuk merespons | Ya | https://jsonplaceholder.typicode.com/posts |
|
method |
Kata kerja HTTP yang digunakan untuk mencocokkan permintaan dengan url |
Tidak | GET |
GET |
nth |
Menentukan bahwa proksi harus merespons hanya setelah saat mencegat permintaan untuk ke-n kalinya | Tidak | 2 |
|
bodyFragment |
String yang harus ada di isi permintaan | Tidak | foo |
Komentar
Gunakan tanda bintang (*) di url properti jika Anda ingin mencocokkan serangkaian karakter dalam URL. Misalnya, https://jsonplaceholder.typicode.com/* cocok dengan https://jsonplaceholder.typicode.com/posts dan https://jsonplaceholder.typicode.com/comments. Pada runtime, Dev Proxy mengonversi masing-masing * menjadi ekspresi .*reguler .
Saat menentukan tiruan, tempatkan tiruan yang paling spesifik terlebih dahulu. Misalnya, jika Anda memiliki dua tiruan, satu untuk https://jsonplaceholder.typicode.com/posts dan satu untuk https://jsonplaceholder.typicode.com/*, letakkan tiruan pertama terlebih dahulu. Jika tidak, Dev Proxy cocok dengan tiruan kedua terlebih dahulu dan mengembalikan respons untuk https://jsonplaceholder.typicode.com/* semua permintaan.
nth Gunakan properti jika Anda perlu mengirim yang berbeda ke URL permintaan yang sama. Misalnya, gunakan untuk mensimulasikan operasi yang berjalan lama. Saat pertama kali Anda memanggil API, api mengembalikan respons dengan pesan inprogress . Kedua kalinya Anda memanggil API, api mengembalikan respons dengan completed pesan. Untuk informasi selengkapnya tentang nth properti ini, lihat Permintaan mock nth.
bodyFragment Dengan menggunakan properti , Anda dapat mencocokkan permintaan berdasarkan konten isi. Misalnya, jika Anda ingin mencocokkan permintaan yang berisi foo string dalam isi, atur bodyFragment properti ke foo. Dev Proxy hanya menggunakan bodyFragment untuk permintaan selain GET.
Objek respons
Setiap respons memiliki properti berikut:
| Harta benda | Deskripsi | Diperlukan | Nilai standar | Nilai sampel |
|---|---|---|---|---|
body |
Isi untuk dikirim sebagai respons terhadap permintaan | Tidak | kosong | { "foo": "bar" } |
statusCode |
Kode status HTTP respons | Tidak | 200 |
404 |
headers |
Array header yang akan disertakan dalam respons | Tidak | kosong | [{ name: "content-type", "value": "application/json" }] |
Komentar
Jika Anda ingin mengembalikan data biner, atur body properti ke nilai string yang dimulai dengan diikuti dengan @ jalur file relatif terhadap file tiruan. Misalnya, @picture.jpg mengembalikan gambar yang disimpan dalam picture.jpg file dalam direktori yang sama dengan file tiruan.
Untuk mencerminkan data permintaan dalam respons, gunakan @request.body.* tempat penampung di isi respons. Misalnya, @request.body.displayName mengembalikan nilai displayName properti dari isi permintaan. Fitur ini berfungsi dengan objek dan array berlapis, memungkinkan Anda membuat respons dinamis yang mencerminkan data permintaan masuk. Penggantian tempat penampung mendukung berbagai jenis nilai JSON termasuk string, angka, boolean, dan objek kompleks.