AgentSkillsCN

laravel-api

使用 Laravel 构建 RESTful API,采用 API Resources、Sanctum 认证、速率限制及版本控制。适用于创建 API 端点、转换响应或处理 API 认证时使用。

SKILL.md
--- frontmatter
name: laravel-api
description: Build RESTful APIs with Laravel using API Resources, Sanctum authentication, rate limiting, and versioning. Use when creating API endpoints, transforming responses, or handling API authentication.
versions:
  laravel: "12.46"
  php: "8.5"
user-invocable: true
references: references/routing.md, references/controllers.md, references/middleware.md, references/requests.md, references/responses.md, references/validation.md, references/pagination.md, references/http-client.md, references/rate-limiting.md, references/redirects.md, references/urls.md, references/strings.md
related-skills: laravel-auth, laravel-eloquent, laravel-testing

Laravel API Development

Agent Workflow (MANDATORY)

Before ANY implementation, use TeamCreate to spawn 3 agents:

  1. fuse-ai-pilot:explore-codebase - Analyze existing API patterns
  2. fuse-ai-pilot:research-expert - Verify Laravel API docs via Context7
  3. mcp__context7__query-docs - Check API Resources and Sanctum patterns

After implementation, run fuse-ai-pilot:sniper for validation.


Overview

Build RESTful APIs with Laravel using API Resources for response transformation and Sanctum for authentication.

ComponentPurpose
ControllersHandle requests, delegate to services
Form RequestsValidate input, authorize actions
API ResourcesTransform models to JSON
MiddlewareAuth, rate limiting, CORS
RoutesVersioned endpoints with groups
PaginationOffset/cursor pagination
HTTP ClientConsume external APIs

Critical Rules

  1. Always use API Resources - Never return Eloquent models directly
  2. Versioned routes - Prefix with /v1/, /v2/
  3. Validate all input - Use Form Requests, not inline validation
  4. Rate limiting - Configure per-route limits
  5. Consistent responses - Same structure, proper status codes
  6. Use services - Keep controllers thin
  7. Eager load - Prevent N+1 with with() before pagination

Reference Guide

Core Concepts

TopicReferenceWhen to consult
Routingrouting.mdDefining versioned API routes
Controllerscontrollers.mdController patterns, resource methods
Middlewaremiddleware.mdRoute protection, request filtering
Validationvalidation.mdForm Requests, validation rules

Request/Response

TopicReferenceWhen to consult
Requestsrequests.mdAccessing input, files, headers
Responsesresponses.mdAPI Resources, status codes
Paginationpagination.mdOffset/cursor pagination

Advanced

TopicReferenceWhen to consult
Rate Limitingrate-limiting.mdThrottle configuration
HTTP Clienthttp-client.mdConsuming external APIs
URLsurls.mdURL generation, signed URLs
Stringsstrings.mdString helpers, UUIDs, slugs
Redirectsredirects.mdRedirect responses

Templates (Code Examples)

Controllers & Routes

TemplatePurpose
ApiController.php.mdComplete CRUD controller with service
api-routes.mdVersioned routes with middleware
routing-examples.mdDetailed routing patterns

Validation & Resources

TemplatePurpose
FormRequest.php.mdStore/Update Form Requests
validation-rules.mdAll validation rules reference
ApiResource.php.mdResource with relationships

External APIs

TemplatePurpose
HttpClientService.php.mdReusable HTTP client service

Quick Reference

Resource Response

php
return PostResource::collection($posts);
return PostResource::make($post);

Status Codes

php
return PostResource::make($post)->response()->setStatusCode(201);
return response()->json(null, 204);

Form Request

php
public function store(StorePostRequest $request): JsonResponse
{
    $post = $this->service->create($request->validated());
    return PostResource::make($post)->response()->setStatusCode(201);
}

Rate Limiting

php
Route::middleware('throttle:60,1')->group(fn () => ...);

Versioned Routes

php
Route::prefix('v1')->group(function () {
    Route::apiResource('posts', PostController::class);
});

Pagination

php
return PostResource::collection(Post::paginate(15));

Feature Matrix

FeatureStatusReference
RESTful Controllerscontrollers.md
API Resourcesresponses.md
Form Request Validationvalidation.md
Route Versioningrouting.md
Route Model Bindingrouting.md
Middlewaremiddleware.md
Rate Limitingrate-limiting.md
Paginationpagination.md
Cursor Paginationpagination.md
HTTP Clienthttp-client.md
Signed URLsurls.md
JSON Responsesresponses.md