diff --git a/app/Http/Controllers/Api/V1/BoardController.php b/app/Http/Controllers/Api/V1/BoardController.php index 64d3d41..0f054d0 100644 --- a/app/Http/Controllers/Api/V1/BoardController.php +++ b/app/Http/Controllers/Api/V1/BoardController.php @@ -106,6 +106,22 @@ public function tenantBoards() }, __('message.fetched')); } + /** + * 게시판 상세 조회 (코드 기반) + */ + public function showByCode(string $code) + { + return ApiResponse::handle(function () use ($code) { + $board = $this->boardService->getBoardByCode($code); + + if (! $board) { + abort(404, __('error.board.not_found')); + } + + return $board; + }, __('message.fetched')); + } + /** * 게시판 필드 목록 조회 */ diff --git a/routes/api.php b/routes/api.php index eba164e..6c9fb58 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1462,6 +1462,9 @@ Route::post('/{code}/posts/{postId}/comments', [PostController::class, 'storeComment'])->name('v1.boards.posts.comments.store'); // 댓글 작성 Route::put('/{code}/posts/{postId}/comments/{commentId}', [PostController::class, 'updateComment'])->name('v1.boards.posts.comments.update'); // 댓글 수정 Route::delete('/{code}/posts/{postId}/comments/{commentId}', [PostController::class, 'destroyComment'])->name('v1.boards.posts.comments.destroy'); // 댓글 삭제 + + // 게시판 상세 (코드 기반) - 가장 마지막에 배치 (catch-all) + Route::get('/{code}', [BoardController::class, 'showByCode'])->name('v1.boards.show_by_code'); }); // 게시글 API (사용자 중심)