IT Share you

응답과 함께 http 상태 코드를 반환하는 Curl

shareyou 2020. 12. 14. 21:08
반응형

응답과 함께 http 상태 코드를 반환하는 Curl


curl을 사용하여 http 헤더를 가져와 http 상태 코드를 찾고 응답도 반환합니다. 명령으로 http 헤더를 얻습니다.

curl -I http://localhost

응답을 얻으려면 다음 명령을 사용합니다.

curl http://localhost

-I 플래그를 사용하자마자 헤더 만 가져오고 응답은 더 이상 존재하지 않습니다. 하나의 명령에서 http 응답과 헤더 / http 상태 코드를 모두 얻는 방법이 있습니까?


출력을 표준 출력으로 가져 오기 위해 사용하도록 지정하는 curl 문서를보고 솔루션을 얻을 수있었습니다.

curl -o - http://localhost

http 반환 코드만으로 응답을 얻으려면 다음을 수행하십시오.

curl -o /dev/null -s -w "%{http_code}\n" http://localhost

이 명령을 사용하여 다른 출력없이 상태 코드를 인쇄합니다. 또한 HEAD 요청 만 수행하고 리디렉션 (각각 -I-L)을 따릅니다 .

curl -o -I -L -s -w "%{http_code}" http://localhost

이렇게하면 상태 스크립트에서 상태 코드를 매우 쉽게 확인할 수 있습니다.

sh -c '[ $(curl -o -I -L -s -w "%{http_code}" http://localhost) -eq 200 ]'

상세 모드는 모든 것을 알려줍니다.

curl -v http://localhost

나는 이것을 사용했다 :

    request_cmd="$(curl -i -o - --silent -X GET --header 'Accept: application/json' --header 'Authorization: _your_auth_code==' 'https://example.com')"

HTTP 상태를 얻으려면

    http_status=$(echo "$request_cmd" | grep HTTP |  awk '{print $2}')
    echo $http_status

응답 본문을 얻으려면 이것을 사용했습니다.

    output_response=$(echo "$request_cmd" | grep body)
    echo $output_response

-i옵션은 당신이 원하는 것을 하나입니다 :

curl -i http://localhost

-i, --include 출력에 프로토콜 헤더 포함 (H / F)

또는 verbose 옵션을 사용할 수 있습니다.

curl -v http://localhost

-v, --verbose 작업을 더 수다하게 만듭니다


사용자에 대한 오류 처리를 추가하기 위해 응답과 내용을 모두 원했기 때문에이 질문을 찾았습니다.

HTTP 상태 코드를 인쇄하여 표준 출력하고 다른 파일에 내용을 쓸 수 있습니다.

curl -s -o response.txt -w "%{http_code}" http://example.com

이를 통해 논리를 사용하여 응답을 처리 할 가치가 있는지 결정할 수 있습니다.

http_response=$(curl -s -o response.txt -w "%{http_code}" http://example.com)
if [ $http_response != "200" ]; then
    # handle error
else
    echo "Server returned:"
    cat response.txt    
fi

프로그래밍 방식으로 사용하려면 다음을 사용합니다.

curlwithcode() {
    code=0
    # Run curl in a separate command, capturing output of -w "%{http_code}" into statuscode
    # and sending the content to a file with -o >(cat >/tmp/curl_body)
    statuscode=$(curl -w "%{http_code}" \
        -o >(cat >/tmp/curl_body) \
        "$@"
    ) || code="$?"

    body="$(cat /tmp/curl_body)"
    echo "statuscode : $statuscode"
    echo "exitcode : $code"
    echo "body : $body"
}

curlwithcode https://api.github.com/users/tj

다음과 같은 출력이 표시됩니다.

statuscode : 200
exitcode : 0
body : {
  "login": "tj",
  "id": 25254,
  ...
}

이 명령

 curl http://localhost -w ", %{http_code}"

쉼표로 구분 된 본문과 상태를 가져옵니다. 당신은 그들을 분리하기 위해 그들을 나눌 수 있습니다.

원하는대로 구분 기호를 변경할 수 있습니다.

참고URL : https://stackoverflow.com/questions/38906626/curl-to-return-http-status-code-along-with-the-response

반응형