CURL 명령 행 URL 매개 변수


186

DELETECURL을 사용하여 URL 매개 변수 로 요청 을 보내려고합니다 . 내가 뭐하는 거지:

curl -H application/x-www-form-urlencoded -X DELETE http://localhost:5000/locations` -d 'id=3'

그러나 서버에 매개 변수 id = 3이 표시되지 않습니다. GUI 응용 프로그램을 사용해 보았으며 URL을 다음 http://localhost:5000/locations?id=3과 같이 전달하면 작동합니다. 이 GUI 응용 프로그램보다는 CURL을 사용하고 싶습니다. 누구든지 내가 잘못하고있는 것을 지적 할 수 있습니까?

답변:


269

"application / x-www-form-urlencoded"헤더, 왜? 사용해보십시오 :

curl -X DELETE 'http://localhost:5000/locations?id=3'

또는

curl -X GET 'http://localhost:5000/locations?id=3'

30
효과가있었습니다. 방금 URL이 따옴표 사이에 있어야 매개 변수를 사용할 수 있음을 깨달았습니다. 해당 MIME 유형은 매개 변수가있는 URL에 대한 것이며 GUI 애플리케이션이 사용하는 것입니다. 또한,하고 싶지 않습니다 GET. 삭제하고 싶 DELETE거나하지 않고 GET적절한 REST 디자인 표준을 따르려고하므로 삭제 할 때 삭제하지 않고 삭제를 사용하고 있습니다.
darksky

1
내 경우에는 큰 따옴표로만 작동하며 curl에서 작은 따옴표는 다음과 같이 말합니다.
Jeff_Alieffson

150

Felipsmartins가 맞습니다.

POST 요청이 아닌 경우 -d /-data 옵션을 실제로 사용할 수 없기 때문에 언급 할 가치가 있습니다. 그러나 -G 옵션을 사용하면 여전히 가능합니다.

이것은 당신이 이것을 할 수 있음을 의미합니다 :

curl -X DELETE -G 'http://localhost:5000/locations' -d 'id=3'

여기는 약간 어리석지 만 명령 줄에 있고 많은 매개 변수가 있으면 훨씬 더 깔끔합니다.

cURL 명령은 일반적으로 상당히 길기 때문에 이것을 말하고 있습니다. 따라서 줄 바꿈을 벗어나는 두 줄 이상에서 만들 가치가 있습니다.

curl -X DELETE -G \
'http://localhost:5000/locations' \
-d id=3 \
-d name=Mario \
-d surname=Bros

zsh를 사용하면 훨씬 더 편안합니다. zsh를 사용하면 한 줄씩 이동할 수 있기 때문에 이전 명령을 다시 편집해야 할 때를 의미합니다. (그냥 말)

도움이 되길 바랍니다.


11
생명의 은인! 고마워요! GET에서 --data-urlencode를 사용하려는 스크립트가 있습니다. 이로 인해 매개 변수를 수동으로 URL 인코딩 할 필요가 없습니다. 감사!
Nathan Wallace

3
-X DELETE -G가 실제로 POST 요청임을 암시합니까?
huggie

1
`-G, --get URL에 게시물 데이터를 넣고 GET을 사용합니다`아니요, URL에 게시물 데이터를 추가하기 만하면 -X [방법]이 우선합니다 (출처 : curl --help and experience)
DownloadPizza

어떻게 그렇게 복잡하게 할 수 있습니까? --data-urlencode 예외없이 URL에 데이터를 추가 한다고 가정 할 수 있지만 이제는 --get실제로 작동 하도록 결합해야합니다 .
Jaakko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.