Saya telah berhasil menggunakan Invoke-WebRequest
untuk mengirim permintaan ke API berbasis REST dari PowerShell.
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Hari ini saya menemukan Invoke-RestMethod
yang terdengar lebih tepat untuk apa yang saya lakukan. Apa perbedaannya, dan adakah alasan untuk menggunakan yang satu?
Get-Help
halaman untuk kedua cmdlet. Saya berspekulasi bahwaInvoke-RestMethod
secara teknis diterbitkan pertama kali, karena tautan "Versi Online" padaGet-Help
akhirnya dengan jumlah yang lebih kecil daripada yang ditemukanInvoke-WebRequest
di halaman.Jawaban:
Anda dapat mengetahuinya dengan mendekompilasi
Microsoft.PowerShell.Commands.Utility
rakitan.Pada dasarnya,
Invoke-WebRequest
tidak berurusan dengan parsing data sebanyak itu. Dengan-UseBasicParsing
, ia melakukan beberapa parsing HTML berbasis Regex. Tanpa sakelar ini, ia akan menggunakan Internet Explorer COM API untuk mengurai dokumen.Itu dia. Itu akan selalu berusaha untuk mem-parsing HTML.
Invoke-RestMethod
di sisi lain memiliki kode untuk mendukung konten JSON dan XML. Ini akan berusaha mendeteksi decoder yang sesuai. Itu tidak mendukung HTML (kecuali untuk HTML yang sesuai dengan XML, tentu saja).Keduanya memiliki logika inti yang sama untuk membuat permintaan HTTP yang sebenarnya. Hanya dalam proses hasil mereka berbeda.
Melihat adalah percaya!
sumber
systemcenterautomation.com melakukan posting blog tentang ini . Kesimpulannya:
sumber