इसे प्राप्त करने का मेरा तरीका :
दोनों (हेडर और बॉडी) प्राप्त करने के लिए, मैं आमतौर पर इसमें curl -D- <url>
निम्न कार्य करता हूं :
$ curl -D- http://localhost:1234/foo
HTTP/1.1 200 OK
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 29 Jul 2020 20:59:21 GMT
{"data":["out.csv"]}
यह हेडर ( -D
) को स्टडआउट ( -
) ( मैन कर्ल--dump-header
में देखें ) को डंप करेगा ।
इस संदर्भ में IMHO भी बहुत काम आता है:
मैं अक्सर उस json डेटा (जैसे कुछ बाकी एपीआई से) को स्वरूपित करने के लिए jq का उपयोग करता हूं । लेकिन जैसा कि jq एक HTTP हेडर की उम्मीद नहीं करता है, यह ट्रिक हेडर को स्ट्रैडर का उपयोग करके प्रिंट करने के लिए है -D/dev/stderr
। ध्यान दें कि इस बार हम -sS
प्रगति मीटर को दबाने के लिए (--silent, --show- त्रुटियों) का उपयोग करते हैं (क्योंकि हम एक पाइप को लिखते हैं)।
$ curl -sSD/dev/stderr http://localhost:1231/foo | jq .
HTTP/1.1 200 OK
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 29 Jul 2020 21:08:22 GMT
{
"data": [
"out.csv"
]
}
मुझे लगता है कि यह भी आसान हो सकता है अगर आप हेडर को प्रिंट करना चाहते हैं (त्वरित निरीक्षण के लिए) लेकिन कंसोल के लिए बॉडी को एक फ़ाइल में प्रिंट करना चाहते हैं (जैसे कि जब किसी तरह का बाइनरी आपके टर्मिनल को गड़बड़ाने के लिए नहीं):
$ curl -sSD/dev/stderr http://localhost:1231 > /dev/null
HTTP/1.1 200 OK
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Wed, 29 Jul 2020 21:20:02 GMT
जागरूक रहें: यह वैसा नहीं है curl -I <url>
! के रूप में -I
एक प्रदर्शन करेंगे HEAD
अनुरोध और नहीं एक GET
के लिए अनुरोध (देखो --head
में आदमी कर्ल हाँ:। सबसे HTTP सर्वर के लिए यह समान ही परिणाम मिलेगा लेकिन मैं व्यावसायिक अनुप्रयोगों जो लागू नहीं करते की एक बहुत कुछ पता है। HEAD
सभी ;-P पर अनुरोध