Learning Laravel: Really Radical Routing
Tags: laravel, routes, learning, php
Published: 2017-12-20 16:25:51

---
title: "Learning Laravel: Really Radical Routing"
published: true
description: The first thing a user interacts with when visiting your website is a route. Every page on your site needs one, so you better make sure they work perfectly. Learn how to create routes and respond to requests with this Learning Laravel article.
tags: laravel,routes,learning,php
canonical_url: https://www.nathanheffley.com/blog/learning-laravel-really-radical-routing
cover_image: https://thepracticaldev.s3.amazonaws.com/i/pesawwwnq5ipwvb26kqk.png
---

*Originally posted on [nathanheffley.com](https://www.nathanheffley.com/blog/learning-laravel-really-radical-routing)*

Since a route is the first thing every user is going to interact with when visiting your site, it's where we're going to start our Laravel journey.

In most projects, your routes will be contained within the `routes\web.php` file. When you open it up after creating a brand new project (read the first lesson in this series if you need help [setting up a Laravel project](https://www.nathanheffley.com/blog/learning-laravel-installation-configuration)) you will see the generic starting route:

```
<?php

Route::get('/', function () {
    return view('welcome');
});
```

Let's break this down to figure out what's going on.

```
<?php

Route::get('/', function () {
```

First we call the `get` function on the Route facade. As you may have guessed, this is setting up a route that will respond to GET requests. The first parameter in this function is the actual route itself. In this case the route is set up for the root url. Assuming that our site is being run locally, this route is going to handle any GET requests that are made to `localhost:8000`. Any other type of request such as POST or any request to a different path like `localhost:8000/example` will ignore this route and keep looking for a better match.

The second parameter, the function, is what gets called whenever somebody makes a request to the server that matches this route. In upcoming lessons I'll show you how to extract this function to other files, but for right now we'll stick with this. For small projects or simple routes, using a function directly in your routes file is a viable option.

```
<?php

return view('welcome');
```

Inside the function we are simply returning this thing called a view. The `view` function is a special Laravel helper that takes a string that is then translated into the name of a file which is returned. Views will be covered in the next lesson, so make sure to check back in to learn exactly what this is doing. For right now, just rest assured that this is returning a view called 'welcome'. When you create a new project and visit it for the first time at `localhost:8000`, this view is what displays the large "Laravel" text and several links you see.

All in all, this route is saying that whenever somebody GETs the '/' route they should be sent back the 'welcome' view.

Lets create our own route. We won't worry about other files or views and just return a simple string.

```
<?php

Route::get('/hello', function () {
    return 'Hello, World!';
});
```

Now visit `localhost:8000/hello` and you should see "Hello, World!" output in plain old text on your screen. Congratulations, you've created a fully-functioning route in Laravel!

Of course most routes you create from here on out won't be quite this simple. In the next lesson we'll go over creating views so that you can return fully valid HTML pages. After that lesson you'll be able to use Laravel to create an entire website, albeit with limited functionality.

Although this may have seemed like an overly simple lesson, that's only because Laravel makes it so easy. We'll definitely be revisiting routes in the future as there is a lot more power hidden here, but we need to cover some more of the basics before we can use those features to their full potential!