Building RESTful APIs with Laravel
Create robust and well-documented RESTful APIs for your Laravel application.
API Resource Classes
Use API resources to transform your data:
class PostResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'slug' => $this->slug,
'excerpt' => $this->excerpt,
'published_at' => $this->published_at,
'category' => new CategoryResource($this->whenLoaded('category')),
];
}
}
API Controllers
class PostController extends Controller
{
public function index()
{
$posts = Post::published()
->with('category')
->paginate(12);
return PostResource::collection($posts);
}
public function show(Post $post)
{
return new PostResource($post->load('category', 'tags'));
}
}
API Authentication
Use Laravel Sanctum for API authentication:
// Generate token
$token = $user->createToken('api-token')->plainTextToken;
// Protect routes
Route::middleware('auth:sanctum')->group(function () {
Route::apiResource('posts', PostController::class);
});
API Documentation
Document your APIs with tools like:
- Laravel Scribe
- Swagger/OpenAPI
- Postman Collections