[curl] curl -GET 및 -X GET

Curl은 X로 시작하는 일련의 다른 http 메소드 호출을 제공하지만 X가없는 동일한 메소드도 제공합니다. 나는 둘 다 시도했지만 차이점을 알아낼 수없는 것 같습니다. 누군가이 두 작업이 어떻게 다른지 빨리 설명해 줄 수 있습니까?



답변

기본적으로 사용할 요청 방법을 명시 적으로 지정하지 않고 curl을 사용합니다. HTTP URL을 전달 curl http://example.com하면 GET을 사용할 것입니다. 사용 -d하거나 -Fcurl이 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로 지정된 데이터를 -dPOST 대신 GET 요청으로 변환하는 데 사용됩니다 .

(나중에 나는 이것을 다루기 위해 curl FAQ를 채우기 위해 여기에 내 대답을 사용 했습니다 .)

경고

최신 버전의 curl은 상세 모드가 활성화 된 경우 ( -v)-사용자가 인식 할 수 있도록 -X의 불필요하고 잠재적으로 유해한 사용에 대해 사용자에게 알립니다 . 이 블로그 게시물 에서 더 자세히 설명하고 동기를 부여했습니다 .

-G는 POST + 본문을 GET + 쿼리로 변환합니다.

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: */*


답변