Topics API Development API Versioning & Routes
intermediate 14 min read

API Versioning & Routes

API route prefixes, versioning strategies, rate limiting, and Laravel 13 API improvements.

API Versioning Strategies

use Illuminate\Support\Facades\Route;

// URI-based versioning
Route::prefix("v1")->group(function () {
Route::apiResource("users", App\Http\Controllers\Api\V1\UserController::class);
});

Route::prefix("v2")->group(function () {
Route::apiResource("users", App\Http\Controllers\Api\V2\UserController::class);
});

API Route Model Binding

// Implicit binding
Route::get("v1/posts/{post}", [PostController::class, "show"]);

// Custom key binding
Route::get("v1/posts/{post:slug}", [PostController::class, "show"]);

// Soft deleted models
Route::get("v1/posts/{post}", [PostController::class, "show"])->withTrashed();

API Resource Routes

// Standard resource routes (excludes create/edit)
Route::apiResource("posts", PostController::class);

// Nested resources
Route::apiResource("users.posts", UserPostController::class);

// Shallow nesting
Route::apiResource("users.comments", CommentController::class)->shallow();

Examples

<?php
// routes/api.php
use Illuminate\Support\Facades\Route;

Route::name('api.v1.')->prefix('v1')->group(function () {
    Route::apiResource('users', \App\Http\Controllers\Api\V1\UserController::class);
    Route::apiResource('posts', \App\Http\Controllers\Api\V1\PostController::class);
});

// php artisan route:list --path=api/v1

Your Notes

Sign in to take notes for this lesson.

Discussion

Sign in to join the discussion.

Flashcards

Sign in to create flashcards.