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