Tu primer app de Express
Tags: javascript, node, beginners, webdev
Published: 2022-05-18 15:35:39

👋 Te enseñare como crear una aplicación de **express** de una manera bastante fácil y dinámica.
 
## Inicializando el proyecto.
Aquí podrás crear tu primer aplicación de [**express**](https://expressjs.com/), es bastante fácil, y te servirá para futuros proyectos.

Primero deberás crear una carpeta en donde guardaras tu proyecto, le puedes poner el nombre que quieras **(api, workspace, proyecto, etc.)**, después, debes escribir el siguiente comando en tu terminal:

```bash
npm init -y
```

> Para esto ya debes tener instalado [NodeJS](https://nodejs.org/es/)

Y se nos creara un archivo **package.json**, que se vera de la siguiente manera:
```json
{
  "name": "api",
  "version": "1.0.0",
  "description": "Mi primer app de express",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "roger",
  "license": "ISC"
}
```
El `-y` sirve para decirle que quieres aceptar todo lo que se instalara.

Seguido de esto debemos instalar las dependencias que utilizara nuestra aplicación con el comando de:
```bash
npm install -S express
```
Después de hacer la instalación se nos creara una carpeta llamada _package-lock.json_.

## Creando tu primer app de express.

Para comenzar debes crear un archivo en el cual vas a ejecutar tu app, lo puedes nombrar como tu quieras **(index.js, app.js, main.js, api.js, etc)**, y dentro deberás requerir a **express** de la siguiente forma:

```js
const express = require('express')
```
`require` nos sirve para importar un modulo, en este caso el de **express**. Lo siguiente que necesitamos para inicializar una aplicación en **express** es que ejecutemos la función de **express**.
```js
const express = require('express')

const app = express()
```
Después debemos indicar en que puerto queremos que se ejecute. Lo podemos hacer de 2 formas, declarando el puerto en una variable, o pasarle directamente el puerto, yo te recomiendo la primera pero ambas funcionan, y también le debemos pasar una función que queremos que se ejecute cuando la app este corriendo con éxito.
```js
const express = require('express')

const app = express()
const PORT = 3000

app.listen(PORT, () => {
    console.log('Server is running on port: ' + PORT)
})
```

Ahora podremos correr nuestra aplicación en la terminal con el comando de:
```bash
node index.js (el nombre de tu archivo)
```
Y veras el siguiente mensaje en tu terminal:
```bash
Server is running on port: 3000
```
Ahora en tu navegador debes ir a la dirección de tu **localhost** que en este caso debes ir a **http://localhost:3000/** y veras un mensaje como de error, pero eso quiere decir que todo esta bien.

## Creando tu primer ruta.
Vamos a hacer una app sencilla, en **app.get()** le debemos pasar un **string** este **string** es para indicarle a **express** cual es la ruta del navegador para que se ejecute la función en el segundo argumento. Esto lo haremos de la siguiente manera:

```js
const express = require('express')
const app = express()
const PORT = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})
```

> Cada cambio que realices en la aplicación debes reiniciar tu servidor.

Si ahora entras en tu navegador a **http://localhost:3000/** veras el mensaje de **Hello World!**. Y si te preguntas que significa **req** y **req**.

| Abreviacion | Significado |
|:------:|:------:|
|**req**| Request|
|**res**| Response|

En **request(req)** es donde viene toda la petición de un cliente. En **response(res)** es para enviarle cosas al usuario como por ejemplo, el mas común de todos **res.send()**, con este podemos enviarle cosas al usuario. Debemos reiniciar nuestra APP, cada que hagamos un cambio, para que esto sea automático lo veremos mas adelante.
```js
app.get('/', (req, res) => {
  res.status(200).send('Hola Mundo!')
})
```
**.status()** nos permite indicarle al cliente si es que la respuesta tuvo éxito, y si viene un dato acompañado de esta, en este caso, el dato es 'Hola Mundo!'.

Podemos llamar a **.status()** y a **.send()** en el mismo **app.get()**. 

###### Si quieres ver mas tutoriales como este puedes entrar a mi perfil y ahí encontraras una gran variedad de tips y tutoriales.👉[Roger](https://dev.to/rogerdimonte)