Invoke-WebRequest और Invoke-RestMethod में क्या अंतर है?


24

मैं सफलतापूर्वक Invoke-WebRequestPowerShell से REST- आधारित API के लिए अनुरोध पोस्ट करने के लिए उपयोग कर रहा हूं ।

Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json

आज मैं सामने आया कि Invoke-RestMethodजो मैं कर रहा हूं उसके लिए और अधिक उपयुक्त नाम दिया गया है। अंतर क्या है, और क्या एक के बाद एक का उपयोग करने का कारण है?


Invoke-RestMethod का एक अलग पैरामीटर सेट है। इसके अलावा (हमेशा बताने के लिए थोड़ा कठिन) यह संभवतः बाद के पावरशेल संस्करण में पेश किया गया था।
सेठ

1
@ सेठ दोनों को संस्करण 3 में पेश किया गया था। यह Get-Helpदोनों cmdlets के पन्नों पर पाया जा सकता है । मैं अनुमान लगाता हूं कि Invoke-RestMethodतकनीकी रूप से पहले प्रकाशित किया गया था, क्योंकि "ऑनलाइन संस्करण" लिंक Get-Helpएक छोटे से संख्या के साथ समाप्त होता है जो कि Invoke-WebRequestपृष्ठ पर पाया गया था ।
रूट

जवाबों:


30

आप Microsoft.PowerShell.Commands.Utilityविधानसभा को विघटित करके पता लगा सकते हैं ।

मूल रूप से, Invoke-WebRequestडेटा को अधिक से अधिक पार्स करने से नहीं निपटता है। इसके साथ -UseBasicParsing, यह कुछ रेगेक्स-आधारित HTML पार्सिंग करता है। इस स्विच के बिना, यह दस्तावेज़ को पार्स करने के लिए इंटरनेट एक्सप्लोरर COM एपीआई का उपयोग करेगा।

बस। यह हमेशा HTML को पार्स करने का प्रयास करेगा।

Invoke-RestMethodदूसरी ओर JSON और XML सामग्री का समर्थन करने के लिए कोड है। यह एक उपयुक्त डिकोडर का पता लगाने का प्रयास करेगा। यह HTML का समर्थन नहीं करता है (XML- अनुरूप HTML को छोड़कर, निश्चित रूप से)।

दोनों वास्तविक HTTP अनुरोध बनाने के लिए एक ही मूल तर्क साझा करते हैं। यह केवल परिणाम प्रसंस्करण में है कि वे अलग हैं।

देखकर ही विश्वास किया जा सकता है!

PS C:\Users\fuzzy> (Invoke-RestMethod https://httpbin.org/headers).headers

Connection Host        User-Agent
---------- ----        ----------
close      httpbin.org Mozilla/5.0 (Windows NT; Windows NT 10.0; de-DE) WindowsPowerShell/5.1.15063.483

PS C:\Users\fuzzy> Invoke-WebRequest -UseBasicParsing https://httpbin.org/headers


StatusCode        : 200
StatusDescription : OK
Content           : {
                      "headers": {
                        "Connection": "close",
                        "Host": "httpbin.org",
                        "User-Agent": "Mozilla/5.0 (Windows NT; Windows NT 10.0; de-DE)
                    WindowsPowerShell/5.1.15063.483"
                      }
                    }

RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    X-Processed-Time: 0.00075101852417
                    Content-Length: 180
                    Content-Type: application/json...
Forms             :
Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
                    true], [X-Processed-Time, 0.00075101852417]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        :
RawContentLength  : 180

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.