Como posso fazer uma solicitação HTTP POST de saída, com dados, no node.js?
node.js
http
post
httprequest
Marca
fonte
fonte
node-fetch
uma implementação dofetch
método JavaScript nativo para fazer solicitações HTTP.Respostas:
Aqui está um exemplo do uso do node.js para fazer uma solicitação POST à API do Google Compiler:
Atualizei o código para mostrar como postar dados de um arquivo, em vez da string codificada. Ele usa o
fs.readFile
comando async para conseguir isso, publicando o código real após uma leitura bem-sucedida. Se houver um erro, ele será lançado e, se não houver dados, o processo será encerrado com um valor negativo para indicar falha.fonte
querystring.stringify()
não suporta objetos aninhados , portanto, você pode usarqs.stringify()
.Content-Length
são bytes e não necessariamente o comprimento da string (UTF-16 etc). O usoBuffer.byteLength(data)
sempre estará correto.querystring.stringify
deve ser seu próprio objeto de dados, não o lixo eletrônico exibido nesta resposta (que pode ser útil para objetos baseados em arquivo?). Eu estava preso em que para as idades ... stackoverflow.com/questions/9768192/... desde a minha solução completaIsso fica muito mais fácil se você usar a biblioteca de solicitações .
Além de fornecer uma sintaxe agradável, facilita as solicitações de json, lida com a assinatura do oauth (para twitter, etc.), pode fazer formulários com várias partes (por exemplo, para upload de arquivos) e streaming.
Para instalar o pedido, use o comando
npm install request
fonte
Você pode usar a biblioteca de solicitações. https://www.npmjs.com/package/request
Para postar dados JSON:
Para postar dados xml:
fonte
Uso Restler e Needle para fins de produção. Ambos são muito mais poderosos que a solicitação de ativação nativa. É possível solicitar com autenticação básica, entrada de cabeçalho especial ou até mesmo upload / download de arquivos.
Quanto à operação post / get, eles também são muito mais simples de usar do que chamadas ajax brutas usando o enableprequest.
fonte
Simples e sem dependência. Usa uma promessa para que você possa aguardar o resultado. Ele retorna o corpo da resposta e não verifica o código de status da resposta.
Uso:
fonte
write
métodoreq,write()
?Você também pode usar o Requestify , um cliente HTTP muito legal e simples que escrevi para o nodeJS +, que suporta cache.
Faça o seguinte:
fonte
Atualização 2020:
Estou gostando muito do phin - o cliente HTTP ultra-leve do Node.js.
Pode ser usado de duas maneiras diferentes. Um com promessas (Async / Await) e outro com estilos tradicionais de retorno de chamada.
Instalar via:
npm i phin
Diretamente do README com
await
:Estilo não autorizado (retorno de chamada):
A partir de 2015 , agora existe uma grande variedade de bibliotecas diferentes que podem fazer isso com o mínimo de codificação. Eu prefiro bibliotecas leves e elegantes para solicitações HTTP, a menos que você precise absolutamente do controle do material HTTP de baixo nível.
Uma dessas bibliotecas é a Unirest
Para instalá-lo, use
npm
.$ npm install unirest
E no
Hello, World!
exemplo que todos estão acostumados.Extra:
muitas pessoas também estão sugerindo o uso de solicitação [2]
Vale a pena notar que nos bastidores
Unirest
usa arequest
biblioteca.O Unirest fornece métodos para acessar o objeto de solicitação diretamente.
Exemplo:
fonte
fonte
Existem dezenas de bibliotecas de código aberto disponíveis que você pode usar para fazer uma solicitação HTTP POST no Nó.
1. Axios (recomendado)
2. Agulha
3. Pedido
4. Módulo HTTPS nativo
Para detalhes, consulte este artigo .
fonte
Esta é a maneira mais simples que eu uso para fazer request: usando o módulo 'request'.
Comando para instalar o módulo 'request':
Código de exemplo:
Você também pode usar o módulo 'http' interno do Node.js. para fazer uma solicitação.
fonte
Eu gosto da simplicidade do superagent ( https://github.com/visionmedia/superagent ). A mesma API no nó e no navegador.
Também há busca de nó ( https://www.npmjs.com/package/node-fetch ), que possui uma API que corresponde
fetch
aos navegadores - no entanto, isso requer codificação manual de cadeias de consulta, não manipula automaticamente tipos de conteúdo ou assim, qualquer outro superagente de trabalho faz.fonte
Se você está procurando solicitações HTTP baseadas em promessas, o axios faz seu trabalho bem.
OU
fonte
Para postar solicitação de descanso / JSON
Podemos simplesmente usar o pacote de solicitação e salvar os valores que temos para enviar na variável Json.
Primeiro instale o pacote require no seu console por npm install request --save
fonte
Encontrei um vídeo que explica como conseguir isso: https://www.youtube.com/watch?v=nuw48-u3Yrg
Ele usa o módulo "http" padrão juntamente com os módulos "querystring" e "stringbuilder". O aplicativo pega dois números (usando duas caixas de texto) de uma página da web e, após o envio, retorna a soma desses dois (juntamente com a persistência dos valores nas caixas de texto). Este é o melhor exemplo que eu poderia encontrar em qualquer outro lugar.
fonte
Esta é a minha solução para
POST
eGET
.Sobre o
Post
método:Se o corpo for um objeto JSON, é importante desserializá-lo
JSON.stringify
e, possivelmente, definir oContent-Lenght
cabeçalho de acordo:antes de escrevê-lo na solicitação:
Sobre ambos
Get
ePost
métodos:O
timeout
pode ocorrer como umasocket
desconexão, por isso você deve registrar seu manipulador como:enquanto o
request
manipulador estiverEu sugiro fortemente registrar os dois manipuladores.
O corpo da resposta está em partes, portanto, você deve concatear partes no
data
manipulador:No
end
obody
conterá todo o corpo da resposta:É seguro quebrar com um
try
... catchthe
JSON.parse`, pois você não pode ter certeza de que é um json bem formatado, na verdade, e não há como ter certeza disso no momento em que você faz a solicitação.Módulo:
SimpleAPI
Uso:
fonte
Depois de lutar muito enquanto criava um utilitário de baixo nível para lidar com a postagem e obter solicitações para o meu projeto, decidi postar meu esforço aqui. Muito nas linhas de resposta aceita, aqui está um trecho para fazer solicitações http e https POST para enviar dados JSON.
fonte
Ou você pode usar esta biblioteca:
fonte
request
biblioteca foi preterida.O Axios é um cliente HTTP baseado em promessa para o navegador e o Node.js. O Axios facilita o envio de solicitações HTTP assíncronas para terminais REST e a execução de operações CRUD. Pode ser usado em JavaScript simples ou com uma biblioteca como Vue ou React.
fonte
Postando outro exemplo de axios de uma solicitação axios.post que usa opções de configuração adicionais e cabeçalhos personalizados.
fonte
Usando dependência de solicitação .
Solução simples:
fonte
request
vem?Request-Promise
Fornece resposta baseada em promessas. códigos de resposta http diferentes de 2xx farão com que a promessa seja rejeitada. Isso pode ser substituído, definindo options.simple = falsefonte