2017-03-29 1 views
2

저는 앱을 만들고 있는데 laravel5를 webAPI로 사용하고 있습니다. webAPI가 유지 관리 모드 일 때 응용 프로그램에 json 오류를 반환하려고합니다. 적절한 메시지를 표시하기 위해 응용 프로그램에 상태 코드가 표시됩니다.미들웨어에서 json 오류를 반환합니까?

저는 한마디로 laravel CheckForMaintenanceMode를 다시 작성하고 Kernel에 등록했습니다.

나는

if ($this->app->isDownForMaintenance()) { 
    $ip = $request->getClientIp(); 
    $allowIp = "111.222.333.444"; 
    if ($allowIp != $ip) { 
     return response()->json(['error' => "Maintenance!!"], 503); 
    } 
} 
return $next($request); 

쓰기하지만 메시지는 satus을 얻을 수없는 응용 프로그램의 편에서 아무 것도 얻을 수 없다 ....

내가 컨트롤러 return response()->json(['error' => "errormessage"], 422); 같이 동일한 코드를 writh 내가 할 수있는 응용 프로그램에서 message.status .. 얻을하지만 미들웨어에서 동일한 일을 할 수 없습니다.

왜? 그것을하는 방법?

+0

응답을 반환합니까 ([ 'Maintenance'], 503); 나는 내 자신의 미들웨어에서 5.4를 가지고있다. – Joe

+0

아니요 작동하지 않았습니다. 메시지 및 상태 코드를 가져올 수 없습니다. – chii

+0

고맙습니다. @Joe. 대답 해주세요 !! 나는 커널 글로벌 HTTP 미들웨어가 아니라 경로 (api.php)에서 미들웨어를 대체했다. – chii

답변

0

이 일 :

if ($this->app->isDownForMaintenance()) { 
    $ip = $request->getClientIp(); 
    $allowIp = "111.222.333.444"; 
    if ($allowIp != $ip) { 
     return response(['Maintenance'], 503); 
    } 
} 
return $next($request); 

그리고하지 커널 글로벌 HTTP 미들웨어의 미들웨어를 등록하지만 (api.php) 경로에 넣어, 같은 :

Route::group(['middleware' => 'maintenance'], function(){******} 

난 정말 이유를 알고이 donot 그러나 이것은 나를 위해 일했다.

+0

커널에 미들웨어를 등록하지 않으면로드 할 수 없으며'ReflectionException Class maintenance does not exist' – dgpro

관련 문제