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