{"id":2542,"date":"2026-09-26T17:06:48","date_gmt":"2026-09-26T20:06:48","guid":{"rendered":"https:\/\/desvendandoocodigo.com.br\/?p=2542"},"modified":"2026-09-26T17:08:13","modified_gmt":"2026-09-26T20:08:13","slug":"como-conectar-react-a-uma-api-node-js-projeto-de-barbearia-com-bootstrap","status":"publish","type":"post","link":"https:\/\/desvendandoocodigo.com.br\/?p=2542","title":{"rendered":"Como Conectar React a uma API Node.js: Projeto de Barbearia com Bootstrap"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Voc\u00ea terminou o backend, testou as rotas e viu os dados chegando ao MySQL. E agora: como transformar essa API em uma aplica\u00e7\u00e3o que as pessoas consigam usar?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste projeto, criamos a interface de um <strong>sistema de agendamento para barbearia<\/strong> com React e Bootstrap. O usu\u00e1rio preenche nome, procedimento, data e hor\u00e1rio; o frontend envia essas informa\u00e7\u00f5es para uma API Node.js, que registra o agendamento no banco de dados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Primeiro, testamos a API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de construir o formul\u00e1rio, conferimos se o backend j\u00e1 estava funcionando. Testamos a rota de cadastro com uma requisi\u00e7\u00e3o <strong>POST<\/strong> e a rota de consulta com <strong>GET<\/strong>. Assim, quando come\u00e7amos a integra\u00e7\u00e3o com React, j\u00e1 sab\u00edamos que a API conseguia receber e listar agendamentos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa etapa ajuda a localizar erros: se a requisi\u00e7\u00e3o funciona no cliente REST, mas falha no navegador, podemos concentrar a investiga\u00e7\u00e3o na comunica\u00e7\u00e3o com o frontend.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Organizando a comunica\u00e7\u00e3o no <code>api.js<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Criamos um arquivo <code>api.js<\/code> para concentrar a chamada \u00e0 API. Nele, usamos <code>fetch<\/code> para enviar os dados do agendamento \u00e0 rota do backend, com o m\u00e9todo POST e o corpo convertido para JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Separar essa comunica\u00e7\u00e3o do formul\u00e1rio deixa cada parte do projeto com uma fun\u00e7\u00e3o clara: o componente coleta os dados e apresenta a resposta; o servi\u00e7o cuida da requisi\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Criando o formul\u00e1rio com React<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No componente de agendamento, usamos <code>useState<\/code> para acompanhar o valor dos campos de <strong>nome, procedimento, data e hor\u00e1rio<\/strong>. Quando o usu\u00e1rio confirma, reunimos esses valores em um objeto e chamamos a fun\u00e7\u00e3o do <code>api.js<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tamb\u00e9m tratamos as respostas para mostrar uma mensagem ap\u00f3s o envio e informar quando ocorre um erro. Durante os testes, corrigimos o comportamento dos campos de data e hor\u00e1rio e conferimos o registro no MySQL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bootstrap, CSS e responsividade<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O Bootstrap ajudou a montar a estrutura visual e adaptar a p\u00e1gina a telas menores. Tamb\u00e9m usamos CSS para dar acabamento \u00e0 interface. No v\u00eddeo, mostramos o formul\u00e1rio em uma visualiza\u00e7\u00e3o de celular e o menu hamb\u00farguer da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O resultado \u00e9 uma interface em que o visitante consegue preencher e enviar um agendamento, enquanto o backend recebe e salva os dados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Assista ao projeto passo a passo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No <strong>v\u00eddeo editado<\/strong>, voc\u00ea acompanha a cria\u00e7\u00e3o do frontend e a integra\u00e7\u00e3o com a API:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Como Conectar React a uma API REST | Node.js, MySQL e Bootstrap\" width=\"960\" height=\"540\" src=\"https:\/\/www.youtube.com\/embed\/gP8OCIA_ZGk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se preferir acompanhar todo o desenvolvimento, com os testes e ajustes feitos durante a aula, assista \u00e0 <strong>live completa<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Backend Pronto, e Agora? Conecte React \u00e0 API com Bootstrap\" width=\"960\" height=\"540\" src=\"https:\/\/www.youtube.com\/embed\/qt5-mYoiOwY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Esse projeto mostra o pr\u00f3ximo passo depois de construir uma API: criar uma interface para que algu\u00e9m consiga utiliz\u00e1-la de verdade.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea terminou o backend, testou as rotas e viu os dados chegando ao MySQL. E agora: como transformar essa API em uma aplica\u00e7\u00e3o que as pessoas consigam usar? Neste projeto, criamos a interface de um sistema de agendamento para barbearia com React e Bootstrap. O usu\u00e1rio preenche nome, procedimento, data e hor\u00e1rio; o frontend envia essas informa\u00e7\u00f5es para uma API Node.js, que registra o agendamento no banco de dados. Primeiro, testamos a API Antes de construir o formul\u00e1rio, conferimos se o backend j\u00e1 estava funcionando. Testamos a rota de cadastro com uma requisi\u00e7\u00e3o POST e a rota de consulta com GET. Assim, quando come\u00e7amos a integra\u00e7\u00e3o com React, j\u00e1 sab\u00edamos que a API conseguia receber e listar agendamentos. Essa etapa ajuda a localizar erros: se a requisi\u00e7\u00e3o funciona no cliente REST, mas falha no navegador, podemos concentrar a investiga\u00e7\u00e3o na comunica\u00e7\u00e3o com o frontend. Organizando a comunica\u00e7\u00e3o no api.js Criamos um arquivo api.js para concentrar a chamada \u00e0 API. Nele, usamos fetch para enviar os dados do agendamento \u00e0 rota do backend, com o m\u00e9todo POST e o corpo convertido para JSON. Separar essa comunica\u00e7\u00e3o do formul\u00e1rio deixa cada parte do projeto com uma fun\u00e7\u00e3o clara: o componente coleta os dados e apresenta a resposta; o servi\u00e7o cuida da requisi\u00e7\u00e3o. Criando o formul\u00e1rio com React No componente de agendamento, usamos useState para acompanhar o valor dos campos de nome, procedimento, data e hor\u00e1rio. Quando o usu\u00e1rio confirma, reunimos esses valores em um objeto e chamamos a fun\u00e7\u00e3o do api.js. Tamb\u00e9m tratamos as respostas para mostrar uma mensagem ap\u00f3s o envio e informar quando ocorre um erro. Durante os testes, corrigimos o comportamento dos campos de data e hor\u00e1rio e conferimos o registro no MySQL. Bootstrap, CSS e responsividade O Bootstrap ajudou a montar a estrutura visual e adaptar a p\u00e1gina a telas menores. Tamb\u00e9m usamos CSS para dar acabamento \u00e0 interface. No v\u00eddeo, mostramos o formul\u00e1rio em uma visualiza\u00e7\u00e3o de celular e o menu hamb\u00farguer da aplica\u00e7\u00e3o. O resultado \u00e9 uma interface em que o visitante consegue preencher e enviar um agendamento, enquanto o backend recebe e salva os dados. Assista ao projeto passo a passo No v\u00eddeo editado, voc\u00ea acompanha a cria\u00e7\u00e3o do frontend e a integra\u00e7\u00e3o com a API: Se preferir acompanhar todo o desenvolvimento, com os testes e ajustes feitos durante a aula, assista \u00e0 live completa: Esse projeto mostra o pr\u00f3ximo passo depois de construir uma API: criar uma interface para que algu\u00e9m consiga utiliz\u00e1-la de verdade.<\/p>\n","protected":false},"author":1,"featured_media":2544,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2542"}],"version-history":[{"count":3,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2542\/revisions"}],"predecessor-version":[{"id":2546,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2542\/revisions\/2546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=\/wp\/v2\/media\/2544"}],"wp:attachment":[{"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/desvendandoocodigo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}