컬의 상태 코드 및 본문 반환

컬의 상태 코드 및 본문 반환

컬을 사용하여 REST 서비스(POST 메서드)를 호출하고 다음을 얻을 수 있습니까?

  • HTTP 상태 코드.
  • 응답 본문.

다른 정보(헤더, 메소드 등)는 내 사용 사례와 관련이 없으며 실제로 테스트할 때 혼란을 더합니다.

예를 들어, 나는 다음을 하고 있습니다:

$ curl -i -H 'Content-Type: application/json' -d @payload.json localhost:8080/apply
HTTP/1.1 100 

HTTP/1.1 400 
Content-Type: text/plain;charset=UTF-8
Content-Length: 42
Date: Fri, 22 Oct 2021 16:29:18 GMT
Connection: close

Invalid product: product does not exist

서비스가 내가 볼 수 있는 것을 반환하고 있다는 것을 알고 400있으며 응답 오류도 볼 수 있으므로 Invalid product: product does not exist좋습니다.

하지만 디스플레이의 나머지 부분을 제거하는 것이 가능합니까?

답변1

-i응답 헤더를 표시하는 대신 변수가 포함된 형식 문자열과 함께 /를 사용할 수 있습니다 .-w--write-outhttp_code

curl --write-out '%{http_code}\n' ...

응답 상태(및 개행)는 본문 뒤에 인쇄됩니다. man curl유용할 수 있는 다른 변수를 확인해 보세요 .

답변2

@DonHolgo의 솔루션을 기반으로 다음과 같이 쓰기에 더 많은 정보를 추가할 수 있습니다.

curl --location 'https://foo.acme.com' \
--request POST \
--write-out '\nhttp_code=%{http_code}\nexitcode=%{exitcode}\n' --silent --show-error \
--header 'Content-Type: application/json' \
--data '{"foo": "bar","baz":"bim"}'

이 예의 출력은 POST의 응답과 결합됩니다.

{"requestId":"550aa1ff-0001-bf46-79ae-018cfe00dff7"}
http_code=202
exitcode=0

이 정보를 변수에 캡처하고 POST 응답(JSON), HTTP 응답 코드, cURL 명령의 종료 코드 등 3가지를 처리할 수 있습니다.

관련 정보