Laravel API Course

1. Intro & Setup

Welcome to the Laravel API course! Get ready to dive into the exciting world of building APIs with Laravel, the powerful and flexible PHP framework.

15:57

2. Cleaning up Laravel

Ready to supercharge your Laravel project for an API-first approach? Let’s dive into optimizing and cleaning it up to make it lightning-fast and ultra-efficient!

16:19

3. Data Modeling

When building an API, mastering the art of structuring your data and defining dynamic relationships between various entities is absolutely essential in Laravel 11.

24:27

4. API Design

When you design an API, it’s absolutely crucial to understand that every API should have a meaningful purpose!

33:09

5. Authentication & Authorization

Say goodbye to the hassle of manually crafting every single detail, and say hello to a streamlined, efficient process that keeps your endpoints vividly documented and ready to go!

14:15

6. Rate Limiting

When it comes to managing API requests, rate limiting is a key player. You don’t want to open the floodgates and let users bombard your API with endless requests.

8:24

7. API Versioning

API versioning might sound like a minor detail at first, but trust me, it's one of those decisions that can make or break the future usability of your API.

22:22

8. Pagination

When you're handling requests that could return extensive lists of resources, it's essential to implement pagination to ensure your responses are manageable and user-friendly.

11:43

9. API Standards

API standards, while useful, aren’t the be-all and end-all. What often takes precedence is discoverability and consistency in your API design.

26:17

10. Handling Errors

Today, we'll explore how to leverage Laravel 11’s error handling system by implementing the API Problem Specification and enhancing it with custom packages to provide consistent, informative error responses.

26:49

11. Write Operations

Let’s explore the steps to manage resources in a Laravel 11 API, focusing on creating, validating, updating, and deleting resources. We’ll use a real-world approach to ensure clarity and usability.

29:30

12. Internationalization

In our previous video, we dove deep into handling write operations—everything from data validation and authorization to deciding between synchronous and asynchronous processing.

11:44

13. Caching Data

In our previous video, we dove deep into handling write operations—everything from data validation and authorization to deciding between synchronous and asynchronous processing.

18:08

14. Basic Security

When it comes to API security, think of it not as a threat but as an opportunity—a chance to build robust, multilayered defenses around your API.

9:53

15. Cache Requests

In Laravel 11, we can take advantage of built-in HTTP features to manage our cache more effectively, streamlining both the response time and the overall user experience.

8:40

16. Scheduling tasks & Sending requests

When working on a Laravel API, the task scheduling system plays a significant role in automating background jobs.

40:33

17. Notifications

Whether you're building a ping service or any application that requires user communication, you’ll likely need to notify users when certain actions occur, such as a service failure.

15:57

18. Monitoring and Logging

When you're developing APIs, it's important to have a clear picture of how your API is performing in real-time.

21:33

19. Testing

When you're developing APIs or any web-based product using Laravel 11, testing plays a crucial role in ensuring that your application behaves as expected.

18:01

20. API Platform

When it comes to building web applications, Laravel has long been a go-to framework for many developers. It's a robust framework, especially for full-stack applications.

17:16

21. Feature Flags

When it comes to building web applications, Laravel has long been a go-to framework for many developers. It's a robust framework, especially for full-stack applications.

11:05

22. Web Sockets

When you're working with APIs, there's a common misconception that WebSockets aren't relevant.

9:58

23. Search API

When you're building APIs, one key feature that often gets overlooked is search. That's what we’ll explore today using TypeSense(https://typesense.org/), a powerful open-source search engine.

15:30

24. Documenting your API

By default, API Platform will give you an OpenAPI specification (currently version 3.1). This standard format allows your API to be easily understood by machines and developers alike.

07:06

Want an easy-to-use API Observability Tool? Try Treblle now

Web Sockets

About this lesson

When you're working with APIs, there's a common misconception that WebSockets aren't relevant.

9:58 October 4, 2024

When you're working with APIs, there's a common misconception that WebSockets aren't relevant. But that's not true! You can use WebSockets to improve your API's responsiveness and efficiency, all while keeping communication seamless. With Laravel 11 and the Laravel Reverb package, setting up WebSockets has never been easier.

Why WebSockets?

WebSockets allow real-time communication between your client and server. Instead of constant HTTP requests that slow down performance, WebSockets let your server push updates to the client whenever there's new data. This avoids the need for polling or multiple roundtrips.

Laravel Reverb: The Game Changer for WebSockets in Laravel

If you haven't heard of Laravel Reverb, it’s time to get acquainted. This package simplifies the entire WebSocket setup, bundling it right alongside your Laravel API.

Key Benefits:

  • No infrastructure management: Reverb runs alongside your existing Laravel app.
  • Real-time event broadcasting without extra dependencies.
  • Easily configurable with your .env file.

Check out Laravel Reverb's official documentation for more on its setup.

Setting Up Laravel Reverb in Your Application

Step 1: Installation

You’ll want to install the package and configure the WebSocket server. If you're using Laravel Herd, this setup is even more streamlined. Herd automatically handles some configurations, so your WebSocket server can be up and running with just a few tweaks in your .env file.

composer require laravel/reverb

Step 2: Configuring Your .env File

Once the package is installed, head over to your .env file. Laravel Reverb requires minimal setup, and you’ll mainly be adjusting ports and allowed origins. Here's an example:

REVERB_PORT=4000
REVERB_ALLOW_ORIGINS=yourfrontend.com

You're good to go! With the server running on port 4000, clients that connect from allowed origins can start receiving updates instantly. Need more customization? You can dive deeper into Laravel Reverb’s configuration options.

Broadcasting Events with Laravel Reverb

Event Creation and Broadcasting

Let’s create an event to see Reverb in action. Laravel makes it straightforward to dispatch events that trigger WebSockets.

php artisan make:event DemoEvent

Within your DemoEvent, make sure to implement ShouldBroadcast:

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class DemoEvent implements ShouldBroadcast
{
    public function __construct(
        public string $message,
    ) {}

    public function broadcastOn()
    {
        return ['demo-channel'];
    }
}

Dispatching Events

Now, dispatch this event in your Laravel app when something happens, like an Eloquent model being updated or a job completing:

DemoEvent::dispatch('New update available!');

The WebSocket server, running on port 4000, will broadcast this event to connected clients instantly.

For more advanced use cases, check out the Laravel Event Broadcasting documentation.

Scaling WebSockets in Laravel

What if your API grows and you need to scale this WebSocket setup? Laravel Reverb has you covered. You can configure it for larger production environments and easily integrate monitoring tools like Laravel Horizon for queues and Laravel Telescope for debugging. Learn more about production-ready scaling in the Laravel Horizon guide.

Leveraging WebSockets for Real-Time API Updates

Instead of relying on webhooks, why not use WebSockets to send real-time updates? With Laravel Reverb, you can easily broadcast updates about jobs, database changes, or even chat messages directly to your client. No need for polling or relying on third-party services like Socket.io or Pusher.

Example: Broadcasting Eloquent Events

Let’s take a look at how you can broadcast Eloquent events in real time. You can create an observer to listen for changes to your models and then broadcast those events through WebSockets.

Create an event observer:

php artisan make:observer DemoObserver

Attach it to your model in the boot method:

use App\Observers\DemoObserver;

public function boot(): void
{
    Model::observe(DemoObserver::class);
}

In your observer, dispatch WebSocket events when a model is created, updated, or deleted:

use App\Events\DemoEvent;

public function updated(Model $model): void
{
    DemoEvent::dispatch('Model updated!');
}

For more resources, check out:

With Laravel 11, your API can be more responsive and efficient, leveraging WebSockets for real-time communication.