2017-03-29 15 views
2

私はアプリを構築していて、webAPIとしてlaravel5を使用しています。 webAPIがメンテナンスモードになっているときに、アプリケーションにjsonエラーを戻したい場合、適切なメッセージを表示するためにアプリケーションにステータスコードが表示されます。ミドルウェアでjsonエラーを返しますか?

私はlaravel CheckForMaintenanceModeをsomereasonに書き換えて、Kernelで登録しました。

私はコントローラにreturn response()->json(['error' => "errormessage"], 422);のように同じコードをwrithと私ができる

....メッセージ、satusを得ることができない私は

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

を書くしかし、私は、アプリside.Iに何も得ることができますアプリケーションではmessage.status ..を取得しますが、私はミドルウェアで同じことをすることはできません。

なぜですか?どうやってするの?

+0

リターンレスポンス(['Maintenance']、503); 'work?私は自分のミドルウェアで5.4を持っています。 – Joe

+0

いいえ動作しませんでした。メッセージとステータスコードを取得できませんでした。 – chii

+0

ありがとうございました@ジョー。私は答えを得ます!私は、カーネルのグローバルな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)にそれを置く:私は本当に理由を知りscroll down toパソコンへ転送

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

をしかし、これは私のために働いた。

+0

カーネルにミドルウェアを登録していない場合はロードできませんので、 'ReflectionExceptionクラスメンテナンスが存在しません' – dgpro

関連する問題