api.php 1.93 KB
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArticleController;
use App\Http\Controllers\CommentController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\TagController;

Route::get('profiles/{user}', [ProfileController::class, 'show']);
Route::get('tags', [TagController::class, 'index']);
Route::get('articles/{article}/comments', [CommentController::class, 'index']);

Route::prefix('users')->group(function () {
    Route::post('/', [UserController::class, 'store']);
    Route::post('login', [UserController::class, 'login']);
});

Route::prefix('articles')->group(function () {
    Route::get('/', [ArticleController::class, 'index']);
    Route::get('feed', [ArticleController::class, 'feed']);
    Route::get('{article}', [ArticleController::class, 'show']);
});

Route::middleware('auth')->group(function () {
    Route::prefix('user')->group(function () {
        Route::get('/', [UserController::class, 'show']);
        Route::put('/', [UserController::class, 'update']);
    });

    Route::prefix('profiles')->group(function () {
        Route::post('{user}/follow', [ProfileController::class, 'follow']);
        Route::delete('{user}/follow', [ProfileController::class, 'unfollow']);
    });

    Route::prefix('articles')->group(function () {
        Route::post('/', [ArticleController::class, 'store']);
        Route::put('{article}', [ArticleController::class, 'update']);
        Route::delete('{article}', [ArticleController::class, 'destroy']);
        Route::post('{article}/favorite', [ArticleController::class, 'favorite']);
        Route::delete('{article}/favorite', [ArticleController::class, 'unfavorite']);
    });

    Route::prefix('articles')->group(function () {
        Route::post('{article}/comments', [CommentController::class, 'store']);
        Route::delete('{article}/comments/{comment}', [CommentController::class, 'destroy']);
    });
});