답변:
기본적으로 사용할 요청 방법을 명시 적으로 지정하지 않고 curl을 사용합니다. HTTP URL을 전달 curl http://example.com
하면 GET을 사용할 것입니다. 사용 -d
하거나 -F
curl이 POST를 사용 -I
하면 HEAD가 발생 -T
하고 PUT이됩니다.
어떤 이유로 든 curl이 제공하는 이러한 기본 선택이 만족스럽지 않으면을 지정하여 해당 요청 메서드를 재정의 할 수 있습니다 -X [WHATEVER]
. 이런 식으로 예를 들어를 수행하여 DELETE를 보낼 수 있습니다 curl -X DELETE [URL]
.
curl -X GET [URL]
어쨌든 GET이 사용되기 때문에 그렇게하는 것은 무의미 합니다. 같은 맥락에서 그것은 무의미 curl -X POST -d data [URL]...
하지만 GET 요청에서 요청 본문을 보내는 재미 있고 다소 드문 요청을 할 수 있습니다 curl -X GET -d data [URL]
.
curl -GET
(단일 대시 사용)은 이러한 목적으로 잘못되었습니다. 이는 -G
, -E
및 -T
옵션 을 지정하는 것과 동일하며 완전히 다른 작업을 수행합니다.
--get
문제를 혼동하지 않기 위해 호출되는 컬 옵션도 있습니다. 긴 형식의 -G로 지정된 데이터를 -d
POST 대신 GET 요청으로 변환하는 데 사용됩니다 .
(나중에 나는 이것을 다루기 위해 curl FAQ를 채우기 위해 여기에 내 대답을 사용 했습니다 .)
최신 버전의 curl은 상세 모드가 활성화 된 경우 ( -v
)-사용자가 인식 할 수 있도록 -X의 불필요하고 잠재적으로 유해한 사용에 대해 사용자에게 알립니다 . 이 블로그 게시물 에서 더 자세히 설명하고 동기를 부여했습니다 .
curl에 -d
옵션 세트를 변환 하도록 요청하고 POST로 요청 본문에 보내는 대신 URL의 쿼리 문자열 끝에 넣고`-G를 사용하여 GET을 발행 할 수 있습니다. 이렇게 :
curl -d name=daniel -d grumpy=yes -G https://example.com/
-X [사용자 방법]
X를 사용하면 기본 'Get'을 재정의 할 수 있습니다.
** 소문자 x
를 대문자로 수정X
를 사용 하면 HTTP 요청에 사용 된 -X [WHATEVER]
요청의 메서드 문자열 만 변경 됩니다. 두 가지 예 (하나는 포함 -X [WHATEVER]
및 포함하지 않음)와 각각에 대한 관련 HTTP 요청 헤더를 사용하면 더 쉽게 이해할 수 있습니다.
# curl -XPANTS -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.224.86.126) port 80 (#0)
> PANTS / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*
# curl -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.33.50.167) port 80 (#0)
> GET / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*