Ketika kita membuat sebuah Rest API menggunakan Laravel, seringkali kita dihadapkan dengan kondisi dimana token yang dikirim oleh user sudah expired atau salah. Response bawaan Laravel nya adalah seperti ini:
Nah jika kita ingin mengubah response-nya, maka kita bisa mengubahnya dengan menambah method pada class App/Exceptions/Handler.php
seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
protected function unauthenticated($request, \Illuminate\Auth\AuthenticationException $exception) { // Jika request via API if ($request->expectsJson()) { // Silahkan ubah response dibawah sesuai kebutuhan teman-teman return response()->json([ 'code' => 401, 'message' => 'Token salah atau sudah expired!' ], 401); } return redirect()->guest(route('login')); } |
Jika dilihat semua konten pada class tadi, jadinya kurang lebih seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<?php namespace App\Exceptions; use Exception; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; class Handler extends ExceptionHandler { /** * A list of the exception types that are not reported. * * @var array */ protected $dontReport = [ // ]; /** * A list of the inputs that are never flashed for validation exceptions. * * @var array */ protected $dontFlash = [ 'password', 'password_confirmation', ]; /** * Report or log an exception. * * @param \Exception $exception * @return void */ public function report(Exception $exception) { parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $e) { return parent::render($request, $e); } /** * Show unauthenticated response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception * @return \Illuminate\Http\Response */ protected function unauthenticated($request, \Illuminate\Auth\AuthenticationException $exception) { // Jika request via API if ($request->expectsJson()) { // Silahkan ubah response dibawah sesuai kebutuhan teman-teman return response()->json([ 'code' => 401, 'message' => 'Token salah atau sudah expired!' ], 401); } return redirect()->guest(route('login')); } } |
Nah kalau sekarang dicoba, maka kurang lebih response nya akan berubah menjadi seperti ini:
Terima kasih, semoga bermanfaat.