fix: [bending] API 연결 실패 시 안내 메시지 표시

- API 401/403/연결실패 시 구체적인 안내 메시지 표시
- 데이터 없음과 API 오류를 구분하여 사용자에게 안내
This commit is contained in:
김보곤
2026-03-21 09:43:57 +09:00
parent fc1a28e552
commit cd06925b87
4 changed files with 470 additions and 12 deletions

View File

@@ -37,8 +37,27 @@ public function index(Request $request): View|\Illuminate\Http\Response
$params = $request->only(['item_sep', 'item_bending', 'material', 'model_UA', 'item_name', 'search', 'page', 'size']);
$params['size'] = $params['size'] ?? 30;
$response = $this->api()->get('/api/v1/bending-items', $params);
$body = $response->successful() ? $response->json('data', []) : [];
$apiError = null;
try {
$response = $this->api()->get('/api/v1/bending-items', $params);
} catch (\Illuminate\Http\Client\ConnectionException $e) {
$apiError = 'API 서버에 연결할 수 없습니다. API 서비스 상태를 확인해 주세요.';
$response = null;
}
if ($response && $response->successful()) {
$body = $response->json('data', []);
} else {
$body = [];
if (! $apiError && $response) {
$apiError = match ($response->status()) {
401 => 'API 인증이 필요합니다. SAM 서비스에 로그인하여 API를 연결해 주세요.',
403 => 'API 접근 권한이 없습니다. 관리자에게 문의해 주세요.',
default => "API 오류가 발생했습니다. (HTTP {$response->status()})",
};
}
}
$data = [
'data' => $body['data'] ?? [],
'total' => $body['total'] ?? 0,
@@ -46,12 +65,15 @@ public function index(Request $request): View|\Illuminate\Http\Response
'last_page' => $body['last_page'] ?? 1,
];
$filterResponse = $this->api()->get('/api/v1/bending-items/filters');
$filterOptions = $filterResponse->successful() ? $filterResponse->json('data', []) : [];
$filterOptions = [];
if (! $apiError) {
$filterResponse = $this->api()->get('/api/v1/bending-items/filters');
$filterOptions = $filterResponse->successful() ? $filterResponse->json('data', []) : [];
}
if ($request->header('HX-Request')) {
if ($request->header('HX-Target') === 'items-table') {
return view('bending.base.partials.table', ['items' => $data]);
return view('bending.base.partials.table', ['items' => $data, 'apiError' => $apiError]);
}
return response('', 200)->header('HX-Redirect', route('bending.base.index', $request->query()));
@@ -60,6 +82,7 @@ public function index(Request $request): View|\Illuminate\Http\Response
return view('bending.base.index', [
'items' => $data,
'filterOptions' => $filterOptions,
'apiError' => $apiError,
]);
}