Não entendo por que precisamos body-parser
em um aplicativo Express, pois podemos obter dados sem usar body-parser
. E o que faz realmente e como?
node.js
express
body-parser
jiten
fonte
fonte
req.body
req.headers
(matriz), pode ler o corpo do pacote http, conformereq.body
explicado por @CleanCrispCode, e pode ler como parâmetro de consultareq.query.variable
. Ajuda, pois o express transforma automaticamente a solicitação em javascript objetosres.body
sem que todo o fluxo seja armazenado em bufferres.body
primeiro.Respostas:
Para manipular a
HTTP POST
solicitação no Express.js versão 4 e superior, você precisa instalar o módulo middleware chamadobody-parser
.body-parser
extrair toda a parte do corpo de um fluxo de solicitação de entrada e expô-lareq.body
.O middleware fazia parte do Express.js anteriormente, mas agora você deve instalá-lo separadamente.
Este
body-parser
módulo analisa os dados codificados em JSON, buffer, string e URL enviados usandoHTTP POST
solicitação. Instalebody-parser
usando o NPM, como mostrado abaixo.edite em 2019-abril-2: em [email protected], o middleware body-parser empacotado com express. para mais detalhes veja isto
fonte
urlencoded()
ejson()
são, na verdade fábricas de middleware que retornam uma função middleware que invocanext()
Sim, podemos trabalhar sem
body-parser
. Quando você não usa, você recebe a solicitação bruta e seu corpo e cabeçalhos não estão no objeto raiz do parâmetro request. Você terá que manipular individualmente todos os campos.Ou você pode usar
body-parser
, como a equipe expressa está mantendo.O que o analisador de corpo pode fazer por você: simplifica a solicitação.
Como usar: Aqui está um exemplo:
Instalar
npm install body-parser --save
Veja como usar o analisador de corpo no express:
Ligação.
https://github.com/expressjs/body-parser .
E então você pode obter corpo e cabeçalhos no objeto de solicitação raiz. Exemplo
fonte
A resposta aqui explica muito detalhadamente e brilhantemente, a resposta contém:
Você pode consultar o github body-parser para ler sua documentação; ele contém informações sobre seu funcionamento.
fonte
Vamos tentar manter isso menos técnico.
Digamos que você esteja enviando dados de formulário html para o servidor node-js, ou seja, você fez uma solicitação ao servidor. O arquivo do servidor receberia sua solicitação em um objeto de solicitação. Agora, por lógica, se você console registrar esse objeto de solicitação no arquivo do servidor, deverá ver os dados do formulário em algum lugar, que poderão ser extraídos, mas whoa! você realmente não!
Então, onde estão nossos dados? Como vamos extraí-lo se não estiver presente apenas no meu pedido.
Uma explicação simples para isso é que o http envia os dados do formulário em partes que se destinam a serem montadas quando chegam ao destino. Então, como você extrairia seus dados.
Mas, por que ter esse trabalho de analisar manualmente seus dados em busca de pedaços e montá-los? Use algo chamado "analisador de corpo" que faria isso por você.
O analisador de corpo analisa sua solicitação e a converte em um formato do qual você pode extrair facilmente as informações relevantes necessárias.
Por exemplo, digamos que você tenha um formulário de inscrição no seu front-end. Você está preenchendo e solicitando ao servidor que salve os detalhes em algum lugar.
Extrair o nome de usuário e a senha da sua solicitação é tão simples quanto abaixo se você usar o analisador de corpo.
Então, basicamente, o analisador de corpo analisou sua solicitação de entrada, reuniu os pedaços que continham os dados do formulário e, em seguida, criou esse objeto de corpo para você e o preencheu com os dados do formulário.
fonte
Ele analisa o corpo da solicitação HTTP. Isso geralmente é necessário quando você precisa saber mais do que apenas a URL que você acessa, principalmente no contexto de uma solicitação HTTP POST ou PUT PATCH, onde as informações que você deseja estão no corpo.
Basicamente, é um middleware para analisar JSON, texto sem formatação ou apenas retornar um objeto Buffer bruto para você lidar com a necessidade.
fonte
Para ter acesso aos dados da publicação, precisamos usar
body-parser
. Basicamente, o quebody-parser
é o que permite expressar o corpo e depois analisá-lo em umJson
objeto que possamos entender.fonte
Tudo isso é uma questão de conveniência.
Basicamente, se a pergunta fosse ' Precisamos usar
body-parser
?' A resposta é não'. Podemos obter as mesmas informações do cliente após a solicitação usando uma rota mais tortuosa que geralmente será menos flexível e aumentará a quantidade de código que precisamos escrever para obter as mesmas informações.É o mesmo que perguntar ' Precisamos usar
express
para começar?' Mais uma vez, a resposta não existe e, novamente, realmente tudo se resume a economizar o trabalho de escrever mais código para fazer as coisas básicas que expressam com o 'embutido'.Na superfície -
body-parser
facilita a obtenção das informações contidas nas solicitações dos clientes em vários formatos, em vez de capturar os fluxos de dados brutos e descobrir em que formato as informações estão, muito menos analisar manualmente essas informações em dados utilizáveis.fonte
Entendimento das Solicitações
Entendendo o analisador de corpo
Conforme sua documentação
Como você viu no primeiro exemplo, tivemos que analisar o fluxo de solicitações recebidas manualmente para extrair o corpo. Isso se torna um pouco tedioso quando existem vários dados de formulário de tipos diferentes. Então, usamos o pacote body-parser, que executa toda essa tarefa sob o capô.
Ele fornece quatro módulos para analisar diferentes tipos de dados
Depois de ter o analisador de corpo de conteúdo bruto, usará uma das estratégias acima (dependendo do middleware que você decidiu usar) para analisar os dados. Você pode ler mais sobre eles lendo a documentação deles.
Depois de definir o
req.body
para o corpo analisado, o analisador de corponext()
chamará o próximo middleware da pilha, que poderá acessar os dados da solicitação sem precisar pensar em como descompactá-lo e analisá-lo.fonte