Merekam dan mengekspor aktivitas proksi

Sekilas
Tujuan: Merekam dan mengekspor aktivitas Proksi Dev ke file laporan
Waktu: 10 menit
Plugins:ExecutionSummaryPlugin, MarkdownReporter
Prasyarat:Menyiapkan Proksi Dev

Untuk merekam dan mengekspor aktivitas proksi, gunakan ExecutionSummaryPlugin dan plugin reporter dalam file konfigurasi Anda.

Contoh berikut menunjukkan cara mengonfigurasi Proksi Dev untuk merekam dan mengekspor aktivitas proksi menggunakan ExecutionSummaryPlugin dan plugin MarkdownReporter .

Berkas: devproxyrc.json

{
  "plugins": [
    {
      "name": "ExecutionSummaryPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
        "name": "MarkdownReporter",
        "enabled": true,
        "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

Tip

Alih-alih membangun konfigurasi sendiri, Anda dapat mengunduh preset siap pakai api-inventory, yang merekam URL yang dipanggil aplikasi Anda dan ringkasan aktivitasnya:

devproxy config get api-inventory
devproxy --config-file "~dataFolder/configs/api-inventory/.devproxy/devproxyrc.json" --urls-to-watch "https://api.contoso.com/*"

Untuk informasi selengkapnya, lihat Menggunakan konfigurasi prasetel.

Catatan

Untuk mengekspor aktivitas, plugin reporter harus diaktifkan dalam file konfigurasi dan ditempatkan setelah ExecutionSummaryPlugin di daftar plugin. Disarankan untuk menempatkan plugin reporter di akhir daftar plugin.

Untuk merekam aktivitas, Dev Proxy harus ditempatkan dalam mode rekaman.

Ada dua cara untuk mulai merekam:

  • Rekam segera. Mulai proksi dengan opsi --record, misalnya devproxy --record.
  • Catat dadakan. Tekan R saat proksi sedang berjalan.

Saat perekaman diaktifkan, ◉ Recording... ditampilkan dalam output proksi.

Untuk menghasilkan laporan dari aktivitas yang direkam, hentikan perekaman.

Ada dua cara untuk berhenti merekam:

  • Hentikan proksi. Tekan Ctrl + C.
  • Hentikan adhoc. Tekan S.

Secara default, aktivitas yang dikelompokkan menurut URL. Untuk mengelompokkan --summary-group-by aktivitas menurut jenis pesan, gunakan opsi .

devproxy --record --summary-group-by messageType

Di mana laporan ditulis

Ketika Anda berhenti merekam, setiap reporter yang diaktifkan menulis satu file untuk setiap laporan yang dihasilkan oleh plugin pelaporan. Dev Proxy menulis file ke direktori kerja saat ini, yang merupakan folder tempat Anda memulai Dev Proxy. Saat Anda memulai Dev Proxy di latar belakang, misalnya dalam alur CI, pastikan Anda memulainya dari folder tempat Anda ingin laporan disimpan.

File laporan menggunakan pola penamaan berikut:

<ReportingPlugin>_<Reporter>.<ext>

Misalnya, konfigurasi dalam artikel ini menghasilkan file bernama ExecutionSummaryPlugin_MarkdownReporter.md.

Jika file dengan nama tersebut sudah ada, Dev Proxy tidak menimpanya. Sebaliknya, ia menambahkan tanda waktu dalam format yyyyMMddHHmmss ke nama file, misalnya ExecutionSummaryPlugin_MarkdownReporter_20261105103000.md. Dev Proxy mencatat nama setiap file laporan yang ditulisnya, misalnya:

Writing report ExecutionSummaryPlugin to ExecutionSummaryPlugin_MarkdownReporter.md...

Tabel berikut mencantumkan ekstensi yang digunakan setiap pelapor.

Wartawan Extension
JsonReporter .json (beberapa laporan menggunakan ekstensi yang berbeda, misalnya .jsonc untuk UrlDiscoveryPlugin)
MarkdownReporter .md
PlainTextReporter .txt

Catatan

Semua rekaman bersifat lokal. Tidak ada data yang dikirim ke Microsoft.

Rekaman dari skrip dan CI

Dalam skrip dan alur CI/CD, Anda tidak dapat menekan tombol untuk memulai dan menghentikan perekaman. Sebagai gantinya, jalankan Dev Proxy di latar belakang dan kontrol perekaman menggunakan DEV Proxy API. Semua permintaan API memerlukan bearer token. Untuk mengetahui token terlebih dahulu, atur variabel lingkungan DEV_PROXY_API_TOKEN ke nilai setidaknya 32 karakter sebelum Anda memulai Dev Proxy.

Urutan minimal adalah:

  1. Atur DEV_PROXY_API_TOKEN ke nilai acak minimal 32 karakter.
  2. Mulai Proksi Dev di latar belakang: devproxy --detach --as-system-proxy false -c devproxyrc.json.
  3. Tunggu hingga GET /proxy berhasil.
  4. Mulai perekaman: POST /proxy dengan {"recording": true}.
  5. Jalankan beban kerja Anda dengan variabel lingkungan HTTP_PROXY dan HTTPS_PROXY yang menunjuk ke Dev Proxy.
  6. Hentikan perekaman: POST /proxy dengan {"recording": false}. Permintaan mengembalikan hasil setelah pelapor selesai, sehingga laporan siap ketika selesai.
  7. Matikan Proksi Dev: POST /proxy/stopProxy.

Dev Proxy menulis laporan ke folder tempat Anda menjalankannya.

#!/usr/bin/env bash
set -euo pipefail

# 1. use a known API token (at least 32 characters)
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
api=http://127.0.0.1:8897
auth="Authorization: Bearer $DEV_PROXY_API_TOKEN"

# 2. start Dev Proxy in the background
devproxy --detach --as-system-proxy false -c devproxyrc.json

# 3. wait for the API
until curl -sf -H "$auth" "$api/proxy" > /dev/null; do sleep 1; done

# 4. start recording
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": true}'

# 5. run the workload through Dev Proxy
HTTP_PROXY=http://127.0.0.1:8000 HTTPS_PROXY=http://127.0.0.1:8000 npm test

# 6. stop recording and wait for the reports
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": false}'

# 7. shut down Dev Proxy
curl -sf -X POST "$api/proxy/stopProxy" -H "$auth"

Contohnya menggunakan port proksi default 8000 dan port API 8897. Atur variabel lingkungan proksi hanya untuk beban kerja, sehingga panggilan API tidak melalui Dev Proxy. Untuk mencegat lalu lintas HTTPS, beban kerja harus mempercayai sertifikat akar Dev Proxy. Untuk informasi selengkapnya tentang menjalankan Dev Proxy dalam pipeline, termasuk mempercayai sertifikat, lihat Menggunakan Dev Proxy dalam skenario CI/CD.

Lihat juga