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.
Contoh konfigurasi
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
],
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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
Tip
Untuk membuat file tiruan dari file dengan respons HTTP mentah, gunakan mocks from-http-responses perintah .
Berikut ini adalah contoh objek tiruan.
Merespons dengan isi
Respons terhadap permintaan dengan respons 200 OK dan isi JSON.
File: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
File: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
File: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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 hanya permintaan pencocokan kedua. Dev Proxy meneruskan permintaan lain ke API.
File: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
File: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.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.
File: mocks.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.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 |
Menanggapi permintaan nth yang disadap yang cocok dengan tiruan method, , urldan bodyFragment |
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 .
Dev Proxy mengabaikan kasus saat mencocokkan url properti dengan URL permintaan. Misalnya, tiruan untuk https://jsonplaceholder.typicode.com/Posts mencocokkan permintaan dengan https://jsonplaceholder.typicode.com/posts. Jika Anda menentukan beberapa tiruan untuk metode yang sama dengan URL yang hanya berbeda dalam casing, Dev Proxy menggunakan tiruan pencocokan pertama.
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 respons 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. Proksi Dev menghitung setiap permintaan yang disadap yang cocok dengan tiruan method, , urldan bodyFragment, apakah itu mengembalikan respons tiruan untuk permintaan tersebut atau tidak. Anda tidak memerlukan tiruan fallback untuk URL yang sama: jika tidak ada tiruan yang berlaku untuk permintaan, Dev Proxy meneruskannya ke API. 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 mengatur body properti ke objek atau array JSON, Dev Proxy menserialisasikannya ke JSON. Jika Anda mengaturnya ke string, Dev Proxy mengirimkan string as-is, tanpa tanda kutip di sekitarnya. Gunakan isi string untuk mengembalikan teks biasa, HTML, XML, atau konten non-JSON lainnya. Karena Proksi Dev default content-type header ke application/json, atur content-type juga header agar sesuai dengan konten Anda, misalnya text/plain.
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.