I find this script useful working on modern RESTful services. It shows both the headers and the formatted JSON response body. The idea is that most times you provide a URL and want to see the full response. If you need extra flags for curl just add them (e.g., user/password). If you want to customize jq—say, filter for just a particular piece of the response—use a double-dash ("--") to separate curl and jq arguments:
An example with Spring Boot (plus some custom actuator endpoints). Note "jq" colorizes the output on the command line (below is plain text):
$ ~/bin/jurlq http://localhost:8081/remote-hello/health
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Application-Context: remote-hello:8081
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 21 Dec 2015 13:28:07 GMT
{
"status": "UP",
"cpu": {
"status": "UP",
"processors": 8,
"system-loadavg": -1,
"process-cpu-load": 0.22963892677420872,
"process-cpu-time": "PT42.71875S",
"system-cpu-load": -1
},
"file": {
"status": "UP",
"usable-disk": 55486464000,
"total-disk": 299694551040
},
"java": {
"status": "UP",
"start-time": "2015-12-21T07:27:06.970-06:00",
"uptime-beats": 0,
"vm-name": "Java HotSpot(TM) 64-Bit Server VM",
"vm-vendor": "Oracle Corporation",
"vm-version": "25.66-b17"
},
"memory": {
"status": "UP",
"committed-virtual-memory": 991350784,
"free-physical-memory": 1952854016,
"free-swap-space": 1203003392,
"total-physical-memory": 8540618752,
"total-swap-space": 10354229248
},
"os": {
"status": "UP",
"arch": "amd64",
"name": "Windows 10",
"version": "10.0"
},
"threads": {
"status": "UP",
"count": 22,
"daemon-count": 20,
"peak-count": 22,
"started-count": 26
},
"diskSpace": {
"status": "UP",
"free": 55486464000,
"threshold": 10485760
},
"configServer": {
"status": "UNKNOWN",
"error": "no property sources located"
},
"hystrix": {
"status": "UP"
}
} UPDATE: Tried Github Gist for the source, but it does not show in my blog feed reader. Here's the script:
#!/bin/bash
curl_args=()
for arg
do
case "$arg" in
-- ) shift ; break ;;
* ) curl_args=("${curl_args[@]}" "$arg") ; shift ;;
esac
done
jq_args=("${@-.}")
curl -s -D - "${curl_args[@]}" | tr -d '\r' | {
while read line
do
case "$line" in
'' ) echo ; break ;;
* ) echo "$line" ;;
esac
done
exec jq "${jq_args[@]}"
}
No comments:
Post a Comment