... sem escapar e outra magia
É realmente?
Em opções como --raw-payload
Sim, todos os dados transmitidos por meio de STDIN
serão enviados como corpo da solicitação, por exemplo:
$ echo 'raw payload' | http httpbin.org/post
Obrigado, Jakub!
Além de --ignore-stdin
Não vejo nenhuma menção a isso dentro de http --help
, pode ser uma boa adição ao texto de ajuda? (Além disso, ótimo trabalho nisso!)
Você também pode usar http httpbin.org/post <<< 'raw payload'
Mas,
$ echo 'running' | http -v put localhost:5000/state
está enviando Content-Type: application/json
cabeçalho.
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
e uma implementação adequada na extremidade receptora, é claro, está tentando analisar isso como um JSON, e falhando.
@furkanmustafa application/json
é o tipo de conteúdo padrão usado por httpie
.
Se você declarar explicitamente o tipo de conteúdo em sua solicitação, ele será resolvido:
$ echo 'running' |http httpbin.org/post Content-Type:text/plain
ou mesmo com o envio de conteúdo compactado:
$ echo 'running' |gzip |http httpbin.org/post Content-Type:text/plain Content-Encoding:gzip
Você também pode usar
http httpbin.org/post <<< 'raw payload'
parecia não funcionar com o PowerShell, 'rawBody' | http post :8080/api/events
funcionou para mim
Comentários muito úteis
Sim, todos os dados transmitidos por meio de
STDIN
serão enviados como corpo da solicitação, por exemplo:https://github.com/jakubroztocil/httpie#redirected -input