반응형
기존에 response 관리에 대해서 포스팅을 한 적이 있다.
별도로, API 서버로만 활용 할 때 서버 오류 등이 발생 했을 경우 Laravel의 기본 오류 창이 return 되는 경우가 있는데 해당 경우 프론트쪽 개발자가 보면 솔직히 조금 난잡한 데이터가 오기 때문에 해당 부분을 일반적인 API 오류시의 return 방식으로 처리 하는 방법을 적어 둔다.
일단 나는 아래와 같은 방식으로 처리하긴 하는데, 다른 방법도 존재 할 수 있다.
더 깔끔한 방법이 있으면 알려주시면 감사하겠습니다..
아래 파일을 열어주고, register 쪽에서 renderable을 다음과 같이 작성했다.
/app/Exceptions/Handler.php
public function register(): void
{
// $this->reportable(function (Throwable $e) {
// });
$this->renderable(function (Throwable $e, Request $request) {
// DEBUG 모드가 아닐 때만
if (!env('APP_DEBUG')) {
$responseError = json_encode([
'code' => Response::HTTP_INTERNAL_SERVER_ERROR,
'message' => 'SERVER ERROR'
], true);
print_r($responseError);
return response()->view('error',[],Response::HTTP_INTERNAL_SERVER_ERROR)->header('Content-Type', 'application/json');
}
});
}
예제 코드 정도라고 생각해 주시면 될 것 같고 각자 상황에 맞춰서 변경해 주면 될 것 같다.
실서버에서 에러 메시지가 전부 찍히게 되면 보안의 위험성이 크기 때문에 APP_DEBUG를 기본적으로 false로 두는 편이다. 그래서 해당 경우에만 일단 처리되도록 한 느낌이라고 봐 주시면 될 것 같고,
error.blade.php 파일의 경우에는 그냥 빈 파일이다. (print_r로 그냥 띄움)
마지막으로 return에서 header를 json으로 처리해서 에러 코드와 SERVER ERROR 라는 메시지가 가도록 처리 해 두었는데, return data의 경우에도 각자 상황에 맞게끔 수정해서 사용하면 된다.
반응형
'PHP > PHP' 카테고리의 다른 글
[Laravel] Socialite 인증 이후 Passport 추가 인증 처리 (Socialite auth with Laravel Passport) (0) | 2023.12.13 |
---|---|
[Laravel] Laravel Dockerfile + gitrunner 또는 gitaction 에서의 배포 (0) | 2023.08.04 |
[Laravel] Schedule + job(queue) (0) | 2023.05.12 |
[Laravel] Task Scheduling (1) | 2023.05.11 |
[Laravel] XSS Protect Middleware 구축 ( + CSRF 보호에 대한 주저리..) (0) | 2023.04.27 |