Cara saya untuk mencapai ini :
Untuk mendapatkan keduanya (header dan body), saya biasanya melakukan curl -D- <url>
seperti di:
$ 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"]}
Ini akan membuang header ( -D
) ke stdout ( -
) (Cari --dump-header
di man curl ).
IMHO juga sangat berguna dalam konteks ini:
Saya sering menggunakan jq untuk mendapatkan data json (misalnya dari beberapa API lainnya) diformat. Tetapi karena jq tidak mengharapkan header HTTP, triknya adalah mencetak header ke stderr menggunakan -D/dev/stderr
. Perhatikan bahwa kali ini kami juga menggunakan -sS
(--silent, --show-error) untuk menekan pengukur kemajuan (karena kami menulis ke pipa).
$ 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"
]
}
Saya kira ini juga dapat berguna jika Anda ingin mencetak header (untuk pemeriksaan cepat) ke konsol tetapi mengarahkan isi ke file (misalnya ketika semacam biner untuk tidak mengacaukan terminal Anda):
$ 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
Waspada: Ini TIDAK sama dengan curl -I <url>
! As -I
akan melakukan HEAD
permintaan dan bukan GET
permintaan (Cari --head
di man curl . Ya: Untuk sebagian besar server HTTP, ini akan menghasilkan hasil yang sama. Tapi saya tahu banyak aplikasi bisnis yang tidak mengimplementasikan HEAD
permintaan sama sekali ;-P