๐Ÿ”ง ๋ฐฑ์—”๋“œ ๐ŸŒฟ ์ค‘๊ธ‰

Laravel ์ค‘๊ธ‰ - API ๊ฐœ๋ฐœ

RESTful API์™€ ์ธ์ฆ ์‹œ์Šคํ…œ ๊ตฌ์ถ•

โฑ๏ธ 10์‹œ๊ฐ„ ๐Ÿ‘๏ธ 28 ์กฐํšŒ
๐Ÿ“– ๊ฐ•์ขŒ ๋‚ด์šฉ
# Laravel API ๊ฐœ๋ฐœ

## 1. API ๋ผ์šฐํŠธ ์„ค์ •
```php
// routes/api.php
Route::prefix("v1")->group(function () {
Route::apiResource("posts", PostController::class);
Route::post("login", [AuthController::class, "login"]);
});
```

## 2. API ์ปจํŠธ๋กค๋Ÿฌ
```bash
php artisan make:controller Api/PostController --api
```

```php
class PostController extends Controller
{
public function index()
{
return response()->json(Post::paginate(10));
}

public function store(Request $request)
{
$post = Post::create($request->validated());
return response()->json($post, 201);
}
}
```

## 3. API Resource (์‘๋‹ต ํฌ๋งทํŒ…)
```bash
php artisan make:resource PostResource
```

```php
class PostResource extends JsonResource
{
public function toArray($request)
{
return [
"id" => $this->id,
"title" => $this->title,
"author" => new UserResource($this->user),
"created_at" => $this->created_at->format("Y-m-d"),
];
}
}
```

## 4. Sanctum ์ธ์ฆ
```bash
composer require laravel/sanctum
php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
php artisan migrate
```

```php
// ํ† ํฐ ๋ฐœ๊ธ‰
$token = $user->createToken("api-token")->plainTextToken;

// ๋ผ์šฐํŠธ ๋ณดํ˜ธ
Route::middleware("auth:sanctum")->group(function () {
Route::get("/user", fn() => auth()->user());
});
```

## 5. Form Request ๊ฒ€์ฆ
```bash
php artisan make:request StorePostRequest
```

```php
class StorePostRequest extends FormRequest
{
public function rules()
{
return [
"title" => "required|max:200",
"content" => "required",
"category_id" => "required|exists:categories,id",
];
}
}
```

## 6. API ์—๋Ÿฌ ์ฒ˜๋ฆฌ
```php
// app/Exceptions/Handler.php
public function render($request, Throwable $e)
{
if ($request->expectsJson()) {
return response()->json([
"error" => $e->getMessage()
], 500);
}
return parent::render($request, $e);
}
```