# Rutas 🚂

Las rutas o redireccionamientos hace referencia a la definición de puntos finales de aplicación (URI) y cómo responden a las solicitudes de cliente. Para ver una introducción al direccionamiento.

El siguiente código es un ejemplo de una ruta muy básica.

```javascript
const express = require('express');
const app = express();

// respond with "hello world" when a GET request is made to the homepage
app.get('/', (req, res) => {
  res.status(200).json({ message: 'hello wolrd!!' });
});
```

### Routes.js

Nuestro proyecto tendrá un archivo donde manejaremos todas las rutas de la aplicación con el fin de dar un mejor orden y mantenimiento al código.

Vamos a crear un archivo `routes.js` en la raíz del proyecto, allí importaremos todas los archivos `index.js` de que vayamos creando dentro de la carpeta **api.**

**Ejemplo:** `/api/product`, `/api/user`, `/api/customer`, etc.

{% code title="routes.js" %}

```javascript
/**
 * Main application routes
 */

// Import Endpoints
const helloWorld = require('./api/helloworld');

module.exports = (app) => {

  // Insert routes below
  app.use('/api/helloworld', helloWorld);
  
  // Next routes
  // Endpoints in plural
  // app.use('/api/users', user);
  // app.use('/api/products', product);
};
```

{% endcode %}

Cuando usamos `app.use('/api/helloworld', helloworld)` estamos diciendolé a express que vamos a usar un middleware para '/api/helloworld' y va será helloworld.

### Update app.js

Ahora solo nos falta agregar las rutas a nuestra aplicación para que podamos acceder a ellas, entonces vamos actualizar el archivo `app.js` con dos nuevas lineas:

{% code title="app.js" %}

```javascript
...

// Add this line
const routeConfig = require('./routes');

// Add this line
routeConfig(app);
```

{% endcode %}

Finalmente este archivo deberá verse así:

{% code title="app.js" %}

```javascript
const express = require('express');
const http = require('http');

const expressConfig = require('./config/express');
// New line
const routeConfig = require('./routes');

const app = express();
const server = http.createServer(app);

expressConfig(app);
// New line
routeConfig(app);

const config = {
  port: 8080,
  ip: '127.0.0.1',
};

// Start server
function startServer() {
  app.shoppingCartBK = server.listen(config.port, config.ip, () => {
    console.log(`Express server listening on ${config.port}, in ${app.get('env')} mode`);
  });
}

setImmediate(startServer);

// Expose app
module.exports = app;
```

{% endcode %}

Levantamos nuevamente nuestro servidor ejecutando en la terminal `node index.js`

Si todo funciona a la perfección, podemos abrir Postman y agregar un llamado GET al endpoint [`http://localhost:8080/api/helloworld`](http://localhost:8080/api/helloworld) y tendremos una respuesta como esta:<br>

![/api/helloworld](https://blobscdn.gitbook.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-Lgyno4NC7rhy49BAEjN%2F-Lh3k97xhf9x8LgXJCIF%2F-Lh3kCfBebojQvEtu9hR%2FScreen%20Shot%202019-06-10%20at%2011.15.03%20PM.png?alt=media\&token=872dd9e8-3600-4462-b1b8-1ed1c4102381)

Recuerda hacer commit de lo visto hasta este punto.

#### Repositorio: [Add the main routes file](https://github.com/colombia-dev/medjs-workshop-fullstack-js-backend/commit/f02f889077dfb2a89b0d15a28d8a2214c9ff5178)
