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.
Sekilas
Tujuan: Mengembalikan respons API yang telah ditentukan sebelumnya tanpa memanggil API nyata
Waktu: 10 menit
Plugins:MockResponsePlugin
Prasyarat:Menyiapkan Proksi Dev
Menggunakan Dev Proxy adalah cara paling mudah untuk mensimulasikan API. Baik Anda membangun front-end dan API belum siap, Anda perlu mengintegrasikan back-end Anda dengan layanan eksternal, atau Anda ingin menguji aplikasi Anda dengan respons yang berbeda, Dev Proxy dapat membantu Anda mensimulasikan respons API. Apa yang hebat tentang menggunakan Dev Proxy adalah tidak memerlukan perubahan apa pun pada kode aplikasi Anda. Anda menentukan respons tiruan untuk API apa pun yang berinteraksi dengan aplikasi Anda dan Dev Proxy mencegat permintaan dan merespons dengan respons tiruan yang Anda tentukan.
Untuk mengejek respons API, Anda perlu melakukan dua hal:
- Buat file dengan respons tiruan.
- Konfigurasikan Dev Proxy untuk menggunakan respons tiruan.
Ujung
Jika Anda menggunakan Visual Studio Code, pertimbangkan untuk menginstal ekstensi Dev Proxy Toolkit. Ini secara signifikan menyederhanakan bekerja dengan file konfigurasi Dev Proxy.
Membuat file dengan respons tiruan
Dev Proxy meniru respons API menggunakan MockResponsePlugin. Plugin memungkinkan Anda menentukan serangkaian respons tiruan. Anda menentukan tiruan dalam file terpisah . Cuplikan kode berikut menunjukkan respons tiruan sederhana untuk permintaan GET ke https://jsonplaceholder.typicode.com/posts/1.
File: 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"
}
]
}
}
]
}
Ujung
Alih-alih membuat file tiruan secara manual, Anda dapat menggunakan MockGeneratorPlugin untuk menghasilkan file tiruan berdasarkan permintaan yang disadap.
Urutan prioritas
Dev Proxy mencocokkan mock sesuai urutan yang Anda tentukan dalam file mock. Jika Anda menentukan beberapa respons dengan URL dan metode yang sama, Dev Proxy menggunakan respons pencocokan pertama.
Saat Anda menggunakan konfigurasi berikut, proxy akan merespons semua permintaan GET ke https://graph.microsoft.com/v1.0/me/photo dengan 500 Internal Server Error.
File: 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
}
}
]
}
Dukungan karakter pengganti
Dev Proxy mendukung penggunaan wildcard di properti URL. Anda dapat menggunakan karakter tanda bintang (*) untuk mencocokkan serangkaian karakter apa pun di URL.
Saat Anda menggunakan konfigurasi berikut, Dev Proxy merespons semua permintaan untuk mendapatkan profil pengguna dengan respons yang sama.
File: 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"
}
}
}
]
}
Saat Anda menggunakan konfigurasi berikut, Dev Proxy mengembalikan gambar yang sama dari disk saat Anda meminta untuk mendapatkan biner foto pengguna mana pun.
File: 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"
}
]
}
}
]
}
Saat Anda menggunakan konfigurasi berikut, Dev Proxy mengembalikan respons yang sama saat Anda meminta untuk mendapatkan profil pengguna saat ini dengan parameter string kueri apa pun.
File: 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"
}
}
}
]
}
Menanggapi dengan isi dari sebuah file
Untuk menjaga file tiruan Anda tetap bersih dan terorganisir, Anda dapat menyimpan konten respons dalam file terpisah dan mereferensikannya dalam file tiruan. Untuk menginstruksikan Dev Proxy, untuk memuat isi respons tiruan dari file, atur properti body ke @ diikuti oleh jalur file relatif terhadap file tiruan.
Misalnya, konfigurasi respons tiruan berikut, menginstruksikan Dev Proxy untuk menanggapi permintaan apa pun untuk https://graph.microsoft.com/v1.0/me dengan konten file response.json yang terletak di folder yang sama dengan file tiruan.
File: 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"
}
]
}
}
]
}
Menggunakan token @berfungsi dengan teks dan file biner .
Mengonfigurasi Dev Proxy untuk menggunakan respons tiruan
Setelah membuat file tiruan, Anda perlu mengonfigurasi Dev Proxy untuk menggunakan respons tiruan. Untuk mengonfigurasi Dev Proxy agar dapat memalsukan respons, tambahkan MockResponsePlugin ke daftar plugin dalam file devproxyrc .
File: 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
}
Pertama, Anda menambahkan MockResponsePlugin ke daftar plugin. Anda menyertakan referensi ke bagian konfigurasinya tempat Anda menentukan jalur ke file tiruan Anda.
Saat Anda memulai Dev Proxy, ia membaca file tiruan dan menggunakan respons tiruan untuk menanggapi permintaan yang cocok dengan tiruan yang ditentukan.
Dukungan untuk permintaan yang tidak diujicobakan
Dev Proxy mendukung menghasilkan kesalahan saat proxy mencegat permintaan yang tidak dimock. Kemampuan untuk menggagalkan permintaan yang tidak dimock berguna untuk mengidentifikasi permintaan yang terlewat dalam file tiruan Anda.
Untuk mengaktifkan fitur ini, tambahkan dan aktifkan pengaturan blockUnmockedRequests ke bagian konfigurasi MockResponsePlugin di file devproxyrc.
File: devproxyrc.json
{
"mocksPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/mockresponseplugin.schema.json",
"mocksFile": "mocks.json",
"blockUnmockedRequests": true
}
}
Saat Dev Proxy mencegat permintaan yang tidak dapat dipalsukan, Dev Proxy mengembalikan respons 502 Bad Gateway.
Langkah berikutnya
Pelajari selengkapnya tentang MockResponsePlugin.
Sampel
Lihat juga sampel Proksi Dev terkait:
- simulasi Microsoft Graph dari dokumen Microsoft Graph API
- tiruan Microsoft Graph dari dokumen Microsoft Graph API dengan data kotak pasir
- Simulasikan pembuatan konektor Microsoft Graph dan skemanya
Lihat juga
- Mensimulasikan CRUD API - Membuat API tiruan dinamis dengan operasi CRUD penuh
- Simulasi permintaan ke-n - Mengembalikan respons berbeda untuk setiap permintaan berulang
- Respons tiruan yang mengembalikan data biner - Mengembalikan gambar dan file
- Mengubah file tiruan - Beralih antar file tiruan
- Glosarium - Terminologi Proxy Pengembang