2016-09-17 6 views
0

Ich weiß, dass diese Frage schon einmal gestellt wurde, aber ich suche nach Antworten, die für meine Situation spezifisch sind. Im Wesentlichen habe ich eine API gebaut. Diese API hat eine ungeschützte Login RouteHandhabungsfehler in API

Route::post('login', 'Auth\[email protected]'); 

I JWT bin für die Authentifizierung verwenden, und diese Anmeldung Route erwartet eine E-Mail ein Passwort. Die Funktion sieht in etwa wie folgt

public function login(Request $request) { 
    $credentials = $request->only('email', 'password'); 

    try { 
     if (! $token = JWTAuth::attempt($credentials)) { 
      return response()->json(['error' => 'invalid_credentials'], 401); 
     } 
    } catch (JWTException $e) { 
     return response()->json(['error' => 'could_not_create_token'], 500); 
    } 

    return response()->json(compact('token'), 200); 
} 

Also, wenn die Anmeldeinformationen falsch sind, ist es eine 401. zurück, wenn die Anwendung nicht in der Lage ist, das Token erstellen sie eine 500-Antwort zurückgibt. Wenn das Token erfolgreich erstellt wurde, gibt es eine 200.

Von Anfang an sieht das in Ordnung aus. Meine Frage ist, ob es notwendig ist, dies weiter zu gehen? Zum Beispiel, wenn ich die Strecke auf Kommentar, so dass es theoretisch nicht mehr vorhanden ist, gibt Postman einen Laravel Fehler

NotFoundHttpException in RouteCollection.php line 161: 

Jetzt ist es sehr unwahrscheinlich ist, dass mein Weg verschwinden würde, aber was passiert, wenn der Server oder etwas ging? Soll ein Laravel-Fehler den API-Benutzern angezeigt werden, oder gibt es eine Möglichkeit, damit umzugehen?

Wirklich ich bin auf der Suche nach einem Rat für den besten Weg, um Fehler innerhalb meiner API zu behandeln.

Dank

+0

ich Ihre Frage nicht bekommen kann? Was ist das Problem hier? Auch wenn der Server heruntergefahren ist, ist Laravel nicht aktiv, Sie benötigen eine Fehlerbehandlung auf niedrigem Niveau. –

+0

Ich bin wirklich nach all den verschiedenen Arten von Fehlern, die ich behandeln sollte. Als Beispiel habe ich die falsche Route angegeben, die einen Laravel-Fehler im Postboten anzeigt. –

+0

Laravel hat standardmäßig einen sehr guten Fehlerhandler, der meistens alle Fehler behandelt. Dies ist eine sehr breite und rechthaberische Frage. Bitte lesen Sie die Anleitung, wie Sie Fragen stellen können. –

Antwort

1

beste Art der Kiste API Route hinzufügen in routes.php

'api' => 'APIController', 

Add Login api in APIController.php

public function postLogin(Request $request) 
    { 
    $response = ""; 
    $error_message = ""; 

    $request->headers->set('content-type','application/json'); 
    $request_data = $request->all(); 

    $validator = $this->user_service->api_login_rules($request_data); 
     if($validator->fails()) 
    { 
     $errors = $validator->getMessageBag()->toArray(); 
     if(isset($errors['email'])) 
     { 
     $error_message = $errors['email'][0]; 
     } 
     else if(isset($errors['password'])) 
     { 
     $error_message = $errors['password'][0]; 
     }  
     $response = ['code' => 100, 'error-message' => $error_message]; 
     return response()->json(['error' => $response]);  
    } 
    else 
    { 
     $email = $request_data['email']; 
     $password = $request_data['password']; 

     if (Auth::attempt(['email' => $email, 'password' => $password])) 
     { 
     $user_details = $this->user_service->getUserDetails($user_id); 
     return response()->json($response, 200, [], JSON_NUMERIC_CHECK); 
     } 
     else 
     { 
     $error_message = "Please enter correct password"; 
     $response = ['code' => 100, 'error-message' => $error_message]; 
     return response()->json(['error' => $response]); 
     } 
    }