Criando Rotas com Express.js \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 15 Horas 

 33 Min 

 50 Seg 

   Tempo restante da oferta: 15 33 50 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Criando Rotas com Express.js  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

# Criando Rotas com Express.js

 Vamos aprender a configurar rotas com o Express.js, com exemplos utilizando as requisições GET, POST, PUT e DELETE.

 [ Wesley Gado ](https://www.treinaweb.com.br/blog/autor/wesley-gado) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/ROTAS-EXPRESS.png)  

A princípio, quando trabalhamos com servidores HTTP vamos ter que apontar para onde o navegador terá que ir com as URLs, desta forma precisamos trabalhar com as **rotas**.

[  ![Node.js - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/node-js.svg)   Curso Node.js - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/nodejs-fundamentos)

Sempre que apontamos o navegador para alguma rota, ele faz uma requisição, se tratando do protocolo HTTP, nós temos os métodos ou verbos HTTP que definem o comportamento da requisição, os mais usados são get, post, put, delete.

Caso esse assunto seja novidade para você, aconselho a leitura de dois artigos onde explicamos estes conceitos, são eles: [O que HTTP?](https://www.treinaweb.com.br/blog/o-que-e-http-request-get-post-response-200-404) e [REST não é simplesmente retornar JSON: indo além com APIs REST](https://www.treinaweb.com.br/blog/rest-nao-e-simplesmente-retornar-json-indo-alem-com-apis-rest/)

## Servidor HTTP com Express

Primeiramente vamos precisar ter um servidor rodando em nosso ambiente, para isso vamos precisar:

- Configurar ambiente Node.js;
- Instalar o Express com o NPM;
- Importar o Express e iniciar o servidor na nossa aplicação.

Esses passos já foram explicados em nosso artigo de como [criar um servidor HTTP com Express](https://www.treinaweb.com.br/blog/criando-um-servidor-http-com-express/ "criar um servidor HTTP com Express").

Agora vamos entender o gerenciamento de rotas do Express.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/10/E-BOOK-GRATUITO-COMECANDO-JS.png) ](https://www.treinaweb.com.br/ebook/guia-javascript)

## Rota com Requisição GET

Vamos criar uma aplicação com a seguinte estrutura:

![estrutura aplicação](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/estrutura-aplicacao.png)

Nosso servidor está no arquivo index.js, da seguinte maneira:

```javascript
import Express from 'Express';

const app = Express();

app.listen(3000, () => 
console.log('Servidor iniciado na porta 3000')
);

```

Agora precisamos criar a **rota** raiz, pra isso vamos utilizar o método (ou verbo) get, caso contrário ao entrarmos em [localhost:3000](http://localhost:3000) (endereço de nosso servidor local), vamos obter a seguinte mensagem no navegador: **Cannot GET /.**

Por isso vamos começar pelo get. O Express permite o uso dos métodos (verbos) HTTP de maneira muito simples, neste caso vamos utilizar o método `app.get()`:

```javascript
import Express from 'Express';

const app = Express();

app.get('/', (req, res) =>
res.send("Rotas no ExpressRota '/'")
);

app.listen(3000, () => 
console.log('Servidor iniciado na porta 3000')
);

```

Como podemos ver, utilizamos o método get seguindo o primeiro parâmetro, onde apontamos a rota. Logo em seguida, passamos uma *arrow function,* que recebe uma *request* e um *response*, com o *response* podemos usar o método *send* e exibir o conteúdo que desejamos, neste caso, uma mensagem em formato HTML, porém no *response* você poderia passar um JSON por exemplo.

Ao executar o nosso servidor e entrar na rota principal, depois de configurado a rota, vamos obter o seguinte resultado:

![Rota Express](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/rotas-express.png)

Nós podemos, por exemplo, criar outras rotas de acordo com a necessidade da sua aplicação, como uma página sobre, desta forma, utilizando a rota **/sobre**:

```javascript
import Express from 'Express';

const app = Express();

app.get('/', (req, res) =>
res.send("Rotas no ExpressRota '/'")
);

app.get('/sobre', (req, res) =>
res.send("Rotas no ExpressVamos aprender a utilizar Rotas com Express")
);

app.listen(3000, () => 
console.log('Servidor iniciado na porta 3000')
);

```

Utilizando a mesmo conceito do método `app.get()`, criamos a rota **/sobre**, com um conteúdo diferente da **rota** principal:

![Rota Sobre](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/rota-sobre-express.png)

Nós podemos também receber parâmetro pela URL usando o método get, para isso precisamos, no momento de configurar a rota, utilizar `:parametro`, onde ‘:’ é o que caracteriza a variável que vamos usar, conforme exemplo abaixo:

```javascript
import Express from 'Express';

const app = Express();

app.get('/', (req, res) =>
res.send("Rotas no ExpressRota '/'")
);

app.get('/sobre', (req, res) =>
res.send("Rotas no ExpressVamos aprender a utilizar Rotas com Express")
);

app.get('/users/:name', (req, res) => //recebe o parâmetro name
    res.send('Usuário:' + req.params.name) //exibe o parametro name
);

app.listen(3000, () => 
console.log('Servidor iniciado na porta 3000')
);

```

Dessa forma vamos receber um parâmetro e exibir na resposta da requisição:

![rotas com paramentros](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/rotas-com-paramentros.png)

## Rota com Requisição POST

Antes de tudo para exemplificar uma rota com express utilizando post vamos criar um array, vamos chamar esse array de carros e criar uma lista com o nome de carros aleatórios:

```javascript
var carros = ['fiesta', 'saveiro'];

```

Em seguida vamos criar uma rota GET para consultar os dados deste array, utilizando o índice do vetor para acessar o valor de cada item do vetor, da seguinte forma:

```javascript
app.get('/cars/:id', (req, res) => {
    let id = req.params.id;
    return res.json([carros[id]])
});

```

Se fizermos uma consulta passando o índice `0`, vamos obter o seguinte retorno:

![Retorno do vetor](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/rota-post-1.png)

Que corresponde ao índice 0 de nosso array.

[  ![Node.js - Templates com PUG](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/node-js.svg)   Curso Node.js - Templates com PUG Conhecer o curso ](https://www.treinaweb.com.br/curso/nodejs-templates-com-pug)

Agora vamos cadastrar novos carros em nosso array utilizando o verbo POST, no Express podemos facilmente utilizar junto ao método `app.post()`. Então vamos criar uma rota e enviar o nome do novo carro pela requisição post da seguinte forma:

Vamos adicionar a seguinte linha após a declaração do array.

```javascript
app.use(Express.urlencoded({ extended: true }));

```

E então, utilizar o método `app.post();`.

```javascript
app.post('/cars/', (req, res) => {
    let name = req.body.name;
    carros[(carros.length)] = name;
    return res.json([carros[(carros.length - 1)]]);
});

```

*OBS: perceba que adicionamos a linha `app.use(Express.urlencoded({ extended: true }));`. Como estamos trabalhando com JSON, precisamos fazer o parsing do conteúdo que recebemos nas requisições. Para isso utilizamos o urlenconded, e no caso o extended: true, para selecionar a biblioteca compatível com JSON. Para mais informações sobre a função `urlenconded();`, você pode estar acessando a [documentação do Express](http://Expressjs.com/pt-br/api.html#Express.urlencoded).*

### Utilizando POSTMAN

O **Postman** é uma ferramenta que podemos utilizar para testar requisições HTTP. Você pode acessar o [site da ferramenta](https://www.postman.com/) para saber mais sobre ela e efetuar o [download](https://www.postman.com/downloads/) (também existe a versão no navegador caso seja sua preferência).

Logo, ao criar a rota /cars, vamos pegar a informação que mandaremos pela requisição (no caso o nome do carro) e atribuir este valor na variável `name`. Por último, vamos adicionar ao final do nosso array. Usando o Postman, vamos então efetivamente enviar a requisição:

![Usando POSTMAN para requisição POST](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/usando-postman-para-requisicao-POST.png)

Para isto vamos usar a nossa rota /cars, selecionar como requisição post, e passar o valor “onix” conforme imagem acima. Observe que tivemos o retorno em JSON, para confirmar vamos fazer uma requisição GET passando o último índice do nosso array:

![Tesstando rota com requisição POST](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/testando-novo-dado-POST.png)

Conforme retorno, nossa requisição post foi efetuada com sucesso. No final deste processo, nosso código estará conforme abaixo:

```javascript
import Express from 'Express';

const app = Express();

var carros = ['fiesta', 'saveiro'];

app.use(Express.urlencoded({ extended: true }));

app.get('/', (req, res) =>
res.send("Rotas no ExpressRota '/'")
);

app.get('/sobre', (req, res) =>
res.send("Rotas no ExpressVamos aprender a utilizar Rotas com Express")
);

app.get('/users/:name', (req, res) =>{
    return res.json([name]);
});

app.post('/cars/', (req, res) => {
    let name = req.body.name;
    carros[(carros.length)] = name;
    return res.json([carros[(carros.length - 1)]]);
});

app.get('/cars/:id', (req, res) => {
    let id = req.params.id;
    return res.json([carros[id]])
}); 

app.listen(3000, () => 
console.log('Servidor iniciado na porta 3000')
);

```

## Rota com requisição PUT

Podemos criar também uma rota com express para atualizar os dados da nossa aplicação, para isso podemos utilizar a rota junto ao método `app.put()`. A requisição PUT segue o mesmo conceito da requisição POST, com a diferença que vamos atualizar uma informação. Neste exemplo vamos atualizar o nome do carro de índice 0 do nosso array já criado, `carros[]`:

```javascript
app.put('/cars/update/:id', (req, res) => {
    let name = req.body.name;
    carros[req.params.id] = name;
    return res.json(carros[req.params.id]);
});

```

Com a variável name pegamos o valor que vamos passar na requisição, localizar o índice do array com o parâmetro passado pela rota e, finalmente, atualizar os valores. Neste caso vamos atualizar o valor que está no índice 0 (fiesta), para “fusca”:

![testando rota com requisição PUT](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/usando-postman-para-requisicao-Put.png)

Usamos o Postman para efetuar a requisição PUT, e logo em seguida fizemos uma requisição GET na rota /cars/:id para confirmar a atualização efetuada em nosso array.

![Testando alteraçãao de dado com PUT](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/testando-alteracao-dado-PUT.png)

## Rota com requisição DELETE

Agora, vamos criar uma rota para deletar algum dado da nossa aplicação, para isso vamos utilizar o método `app.delete();`. Vamos passar a rota “/cars/delete/:id, onde o id será o índice do nosso array, desta forma:

```javascript
app.delete('/cars/delete/:id', (req, res) => {
    let id = req.params.id;
    carros[id] = null; //deletar item
    return res.json(carros[id]);
});

```

Assim, o conteúdo do nosso array de respectivo id, que foi passado por parâmetro, será null. Fizemos isso para simular a exclusão de um dado (estamos alterando para vazio), já que estamos utilizando somente um array, por exemplo, e não necessariamente acessando um banco de dados e excluindo algum item. Para testar, seguimos o mesmo exemplo da rota usando a requisição put:

![Usando postman para testar rota com requisição DELETE](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/usando-postman-para-requisicao-DELETE.png)

Por fim, acessamos a rota com a requisição get:

![Testando exclusão de dado com delete](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/testando-alteracao-dado-DELETE.png)

## Conclusão

Em suma, vale salientar que nós utilizamos um único arquivo com várias responsabilidades (como as rotas e o servidor), fizemos isto para fins **didáticos**, conforme a aplicação for crescendo o ideal é criarmos vários arquivos onde cada um tenha uma responsabilidade. Como resultado, aprendemos a utilizar as rotas com Express em diferentes cenários em relação às requisições GET, POST, PUT e DELETE, onde podemos utilizar para outros métodos/verbos HTTP possibilitando criar aplicações web e APIs de forma robusta e prática.

[  ![Express - Desenvolvendo aplicações web](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/express.svg)   Curso Express - Desenvolvendo aplicações web Conhecer o curso ](https://www.treinaweb.com.br/curso/express-desenvolvendo-aplicacoes-web)

Por fim, caso queira aprender mais sobre Express saiba que aqui na [TreinaWeb](https://treinaweb.com.br/) temos o curso [Express - Desenvolvendo aplicações web](https://www.treinaweb.com.br/curso/express-desenvolvendo-aplicacoes-web) que possui **03h09 de vídeos** e um total de **18 exercícios**. Conheça também nossos outros cursos de [Node.js](https://www.treinaweb.com.br/cursos?q=node).

Veja quais são os tópicos abordados durante o curso de Express - Desenvolvendo aplicações web:

- Conhecendo a estrutura;
- Entendendo os objetos Request e Response;
- Servindo arquivos estáticos;
- Roteamento;
- Conexão com banco de dados;
- Template Engine;
- Express Generator.

- [ #JavaScript ](https://www.treinaweb.com.br/blog/tag/javascript)
- [ #Express.js ](https://www.treinaweb.com.br/blog/tag/express-js)
- [ #Node.js ](https://www.treinaweb.com.br/blog/tag/node-js)

Autor

 ![Wesley Gado](//secure.gravatar.com/avatar/1b770ca482a7232b1885881430a592bb?d=mm)

## Wesley Gado

 Formado em Análise e Desenvolvimento de Sistemas pelo Instituto Federal de São Paulo, atuou em projetos como desenvolvedor Front-End. Nas horas vagas grava Podcast e arrisca uns três acordes no violão. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wesley-gado)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/06/NODE-SQUELIZE-MYSQL-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Usando Sequelize ORM com Node e Express ](https://www.treinaweb.com.br/blog/usando-sequelize-orm-com-node-e-express) 

     Vamos aprender a configurar uma aplicação com banco de dados MySQL usando Sequelize ORM com Node.js e Express.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/SERVIDOR-HTTP-EXPRESS-JS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     6 anos atrás

    ##  [ Criando um servidor HTTP com Express ](https://www.treinaweb.com.br/blog/criando-um-servidor-http-com-express) 

     O Express é um framework utilizado em conjunto com o Node.js. Ele possui características que facilitam o desenvolvimento de nossas aplicações web e APIs, como um sistema de rotas completo, tratamento de exceções, gerenciamento de requisições HTTP e muito mais.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/07/CRIANDO-PRIMEIRO-CRUD-COM-NESTJS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Criando o primeiro CRUD com NestJS ](https://www.treinaweb.com.br/blog/criando-o-primeiro-crud-com-nestjs) 

     Neste artigo veremos como criar um CRUD com NestJS, o passo a passo utilizando ferramentas como o TypeORM e o banco de dados SQLite.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como realizar upload de arquivos locais no NestJS ](https://www.treinaweb.com.br/blog/como-realizar-upload-de-arquivos-locais-no-nestjs) 

     Neste artigo vamos aprender a utilizar o recurso de upload de arquivos locais com o NestJS utilizando a biblioteca Multer do Express.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Trabalhando com Prisma ORM e NestJS ](https://www.treinaweb.com.br/blog/trabalhando-com-prisma-orm-e-nestjs) 

     Neste artigo vamos aprender os primeiros passos para trabalhar com o Prisma ORM e o NestJS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Guia do framework NestJS ](https://www.treinaweb.com.br/blog/guia-do-framework-nestjs) 

     Neste guia do framework NestJS vamos fazer um compilado de tópicos úteis sobre o framework, desde criar um projeto básico até autenticação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/NEST-JS-CLASS-VALIDATOR-CLASS-TRANSFORMER-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Validação e Serialização no NestJS: class-validator e class-transformer ](https://www.treinaweb.com.br/blog/validacao-e-serializacao-no-nestjs-class-validator-e-class-transformer) 

     Vamos abordar a utilização de duas biblitecas de serialização e validação fundamentais no NestJS: class-validator e class-transformer

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/04/NEST-JS-COM-HANDLEBARS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ NestJS com template engine handlebars ](https://www.treinaweb.com.br/blog/nestjs-com-template-engine-handlebars) 

     Neste artigo vamos aprender a configurar o NestJS com o handlebars, uma template engine que permite criarmos views dinâmicas e robustas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/08/NEST-JS-CLASS-VALIDATOR-CLASS-TRANSFORMER-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como enviar emails com NestJS e Nodemailer ](https://www.treinaweb.com.br/blog/como-enviar-emails-com-nestjs-e-nodemailer) 

     Neste artigo vamos aprender como enviar emails utilizando o NestJS e o Nodemailer, um dos módulos mais utilizados do ecossistema NodeJS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/06/TEMPLATE-ENGINE-PUG-EXPRESS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Express com Template Engine PUG ](https://www.treinaweb.com.br/blog/express-com-template-engine-pug) 

     Neste artigo vamos estruturar um projeto utilizando Express com o Template Engine PUG e entender as suas principais características.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/conhecendo-o-mean-stack-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     6 anos atrás

    ##  [ Conhecendo o MEAN Stack ](https://www.treinaweb.com.br/blog/conhecendo-o-mean-stack) 

     Conheça neste artigo o que é o MEAN Stack.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/EJS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     5 anos atrás

    ##  [ Utilizando template engine EJS com Node.js ](https://www.treinaweb.com.br/blog/utilizando-template-engine-ejs-com-node-js) 

     Neste artigo vamos aprender a utilizar a Template Engine EJS com Node.js e também alguns recursos interessantes desta ferramenta.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **15h 33min 50s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
