2011-12-14 16 views
70

Curl ofrece una serie de diferentes llamadas a métodos http que llevan como prefijo una X, pero también ofrece los mismos métodos sin ella. Intenté ambas cosas y parece que no puedo entender la diferencia. ¿Puede alguien explicarme rápidamente cómo difieren estas dos operaciones?curl -GET y -X GET

Respuesta

157

De forma predeterminada, utiliza curl sin decir explícitamente qué método de solicitud usar. Si solo ingresas una URL HTTP como curl http://example.com, usará GET. Si usa -d o -F curl usará POST, -I causará HEAD y -T lo pondrá en PUT.

Si por alguna razón no está satisfecho con estas opciones predeterminadas que Curl hace por usted, puede anular esos métodos de solicitud especificando -X [WHATEVER]. De esta manera, puede, por ejemplo, enviar un DELETE haciendo curl -X DELETE [URL].

No tiene sentido hacer curl -XGET [URL] ya que GET se usaría de todos modos. En el mismo sentido, no tiene sentido hacer curl -X POST -d data [URL]... Pero puede hacer una solicitud divertida y algo rara que envía un cuerpo de solicitud en una solicitud GET con algo como curl -X GET -d data [URL].

profunda búsqueda

curl -GET (utilizando un único guión) es simplemente incorrecto para este propósito. Eso es lo mismo que especificar las opciones -G, -E y -T y eso hará algo completamente diferente.

También hay una opción de curvatura llamada --get para no confundir las cosas con ninguna de las dos. Es la forma larga de -G, que se usa para convertir datos especificados con -d en una solicitud GET en lugar de una POST.

(I posteriormente usado mi propia respuesta aquí para rellenar el curl FAQ to cover this.)

Advertencias en 7.45.0 y más tarde

En las versiones modernas de rizo, se informará a los usuarios sobre este uso innecesario de -X cuando el modo detallado está habilitado (-v) - para informar a los usuarios. Explicado y motivado adicionalmente en this blog post.

+1

-XGET puede ser no operativa, pero lo hace explícito. – mtyson

+0

"De forma predeterminada, utiliza curl sin decir explícitamente qué método de solicitud usar. Si solo ingresa una URL HTTP como curl http://example.com, usará GET. Si usa -d o -F, curl usará POST , "Causaré una CABEZA y -T lo haré PUT". Todo lo que necesitas saber. – Donato

0

Quizás no sigo su pregunta, pero parece que existe la opción -G que simplemente indica a curl que use el método GET y luego está la opción -X que le permite hacer los métodos que usted desee. Entonces curl -G y curl -XGET serían lo mismo. No veo un -GET, parece que curl simplemente ignora cualquier cosa después de -G.

+2

realidad "-get rizo" es igual a -E -G y -T. Todas las opciones de nombre largo para curl se utilizan con dos guiones, como en --url o --user. –

+0

Sí, eso es correcto. Yo no fui pensado allí. – masebase

3

-x [el método]
x permiten sustituir el valor por defecto 'Get'

+0

no, low-min-set el proxy para usar ... –