컬의 상태 코드 및 본문 반환

컬의 상태 코드 및 본문 반환

컬을 사용하여 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가지를 처리할 수 있습니다.

관련 정보