... sin escapar y otra magia
¿Es realmente?
Bajo una opción como --raw-payload
Sí, cualquier dato pasado a través de STDIN
se enviará como el cuerpo de la solicitud, por ejemplo:
$ echo 'raw payload' | http httpbin.org/post
¡Gracias, Jakub!
Aparte de --ignore-stdin
, no veo ninguna mención de esto dentro de http --help
, ¿podría ser una buena adición al texto de ayuda? (¡Además, trabajo increíble en esto!)
También puede usar http httpbin.org/post <<< 'raw payload'
Pero,
$ echo 'running' | http -v put localhost:5000/state
está enviando Content-Type: application/json
encabezado.
PUT /state HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 8
Content-Type: application/json
Host: localhost:5000
User-Agent: HTTPie/0.9.9
running
y una implementación adecuada en el extremo receptor es, por supuesto, intentar analizar eso como un JSON, y falla.
@furkanmustafa application/json
es el tipo de contenido predeterminado utilizado por httpie
.
Si indica explícitamente el tipo de contenido en su solicitud, se resolverá:
$ echo 'running' |http httpbin.org/post Content-Type:text/plain
o incluso con el envío de contenido comprimido:
$ echo 'running' |gzip |http httpbin.org/post Content-Type:text/plain Content-Encoding:gzip
También puede usar
http httpbin.org/post <<< 'raw payload'
parecía no funcionar con powershell, 'rawBody' | http post :8080/api/events
funcionó para mí
Comentario más útil
Sí, cualquier dato pasado a través de
STDIN
se enviará como el cuerpo de la solicitud, por ejemplo:https://github.com/jakubroztocil/httpie#redirected -input