مارک پلاس

تکنولوژی نوین اینترنتی

نحوه ایجاد API در لاراول

دسته‌بندی‌ها

نحوه ایجاد API در لاراول

🧩 ایجاد API در Laravel



✅ مراحل ساخت API در لاراول

1. ساخت پروژه جدید Laravel

اگر پروژه‌ی لاراول رو هنوز ایجاد نکردی، ابتدا باید اون رو بسازی:

bash
laravel new my-api cd my-api

2. فعال‌سازی و پیکربندی Sanctum برای احراز هویت (اختیاری)

اگر می‌خواهی احراز هویت بر اساس API Token (مثلاً با Sanctum) داشته باشی، ابتدا Sanctum رو نصب کن:

bash
composer require laravel/sanctum php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" php artisan migrate

در app/Http/Kernel.php به گروه api middleware مربوط به Sanctum رو اضافه کن:

php
'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ],

3. تعریف مدل‌ها و مایگریشن‌ها

مثلاً مدل Post برای ذخیره مطالب رو به این شکل می‌سازیم:

bash
php artisan make:model Post -m

در فایل مایگریشن (database/migrations/xxxx_xx_xx_create_posts_table.php):

php
public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); }

حالا مایگریشن رو اجرا کن:

bash
php artisan migrate

4. ساخت Controller برای API

برای ساخت Controller با متدهای پایه‌ای مثل index, store, show, update, destroy، از دستور زیر استفاده کن:

bash
php artisan make:controller Api/PostController --resource

در اینجا متدهای مختلف Controller رو تعریف می‌کنیم:

php
namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\Post; use Illuminate\Http\Request; class PostController extends Controller { public function index() { return response()->json(Post::all()); } public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string', 'content' => 'required|string', ]); $post = Post::create($validated); return response()->json($post, 201); } public function show($id) { $post = Post::findOrFail($id); return response()->json($post); } public function update(Request $request, $id) { $validated = $request->validate([ 'title' => 'sometimes|required|string', 'content' => 'sometimes|required|string', ]); $post = Post::findOrFail($id); $post->update($validated); return response()->json($post); } public function destroy($id) { $post = Post::findOrFail($id); $post->delete(); return response()->json(['message' => 'Post deleted successfully']); } }

5. تعریف Route‌ها

در routes/api.php می‌تونی مسیرهای API رو تعریف کنی:

php
use App\Http\Controllers\Api\PostController; Route::apiResource('posts', PostController::class);

اینجا از Route::apiResource استفاده کردیم که مسیرهای RESTful رو برای index, store, show, update, و destroy به صورت خودکار ایجاد می‌کنه.


6. احراز هویت (اختیاری)

اگر نیاز به احراز هویت دارید، می‌تونید از auth:sanctum به این شکل استفاده کنید:

php
Route::middleware('auth:sanctum')->group(function () { Route::apiResource('posts', PostController::class); });

سپس، برای گرفتن توکن و احراز هویت، باید در مدل User از HasApiTokens استفاده کنید:

php
namespace App\Models; use Laravel\Sanctum\HasApiTokens; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasApiTokens; }

7. تست API در Postman یا CURL

حالا می‌تونی از ابزارهایی مثل Postman یا CURL برای تست API استفاده کنی.

  • GET /api/posts → نمایش لیست تمام پست‌ها

  • POST /api/posts → ارسال پست جدید (با داده‌های JSON)

  • GET /api/posts/{id} → دریافت یک پست خاص

  • PUT /api/posts/{id} → به‌روزرسانی پست

  • DELETE /api/posts/{id} → حذف پست


8. نمونه درخواست‌ها

GET Request:

http
GET /api/posts

POST Request (برای ارسال پست جدید):

http
POST /api/posts Content-Type: application/json { "title": "My First Post", "content": "This is the content of the first post." }

✨ جمع‌بندی

با این مراحل شما یک API کامل با روش‌های RESTful و احراز هویت ایجاد کردید. می‌تونید برای تست از Postman استفاده کنید و دستورات مختلفی برای ارسال، دریافت، و حذف داده‌ها انجام بدید.

اگر نیاز به امکانات بیشتر یا نحوه اتصال API به فریمورک‌های دیگر داشته باشی، همیشه می‌تونی سوال کنی! 😎

محتوای مرتبط

پست‌های مرتبط