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
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. Whether you need versioning or not really depends on your use case, and there's no one-size-fits-all answer. To dive deeper into the various strategies and best practices, check out Treblle’s comprehensive guide on API versioning.
Why Versioning Matters
When your API starts serving multiple users, changes can have a broader impact. Without versioning, a change could affect all your users, leading to potential disruptions. With versioning, you can manage how changes are introduced, minimizing the risk of breaking existing integrations.
Approaches to API Versioning
1. Query String Versioning
One way to handle API versioning is by using a query string parameter. For instance, you might add ?version=1 to your API requests. This is straightforward but can become cumbersome as your API evolves. Example:
// Route definition for versioning via query string
Route::get('/api/resource', function () {
return response()->json(['message' => 'Version 1']);
})->middleware('version:1');
While functional, this method can quickly become unwieldy as versions increase.
2. URI Versioning
A more structured approach involves including the version in the URL path, such as api/v1/resource. This method is clean and makes it clear which version of the API is being accessed. Example:
// Route definition with URI versioning
Route::prefix('api/v1')->group(function () {
Route::get('/resource', 'ResourceController@index');
});
As your API grows, this method scales well and keeps versioning organized.
3. Header-Based Versioning
Header-based versioning is another option, often used in large APIs or microservices architectures. Here, you add a custom header like X-API-Version: 1.0
. This method is less intrusive but may require more complex handling in your application.
Example:
// Middleware to handle versioning via headers
Route::middleware('api_version')->group(function () {
Route::get('/resource', 'ResourceController@index');
});
In Laravel, you can create middleware to manage this:
// Create middleware with artisan
php artisan make:middleware ApiVersionMiddleware
Middleware code:
public function handle($request, Closure $next): Response
{
$version = $request->header('X-API-Version', '1.0');
// Logic to handle different versions
return $next($request);
}
Organizing Your Code
Directory Structure for Versioning
To keep your API clean and manageable, structure your code by version. This means creating directories for each version of your API. Example Directory Structure:
app/Http/Controllers/Api/V1
app/Http/Controllers/Api/V2
This organization makes it easier to maintain different versions and ensures that changes in one version don't impact others.
Sunset and Deprecation Headers
When deprecating old versions, it’s essential to notify users. Laravel allows you to add custom headers like Sunset
and Deprecated
to inform users about deprecated endpoints.
Example:
// Middleware to add sunset header
public function handle($request, Closure $next)
{
$response = $next($request);
$response->headers->set('Sunset', 'Wed, 01 Jan 2025 00:00:00 GMT');
$response->headers->set('Deprecated', 'true');
return $response;
}
Feel free to explore Laravel’s official documentation for more insights on versioning and API management, or read Treblle’s blog post on API Versioning in Laravel. And remember, as you grow and adapt your API, the key is to choose a versioning strategy that aligns with your project’s needs and scale.