2016-07-26 14 views
0

Ich frage mich, ob das möglich ist, stellen Sie sich vor, dass ich diese Antwort auf eine laravel API habe, wenn ich alle Benutzer anrufe, ich frage mich, ob es möglich ist, nur einen von ihnen zu nennen und die Informationen zu zeigen dieser Benutzer mag public/api/users/1Laravel Api (Neuling braucht Hilfe)

Ich kann die Wörter nicht finden, um eine Antwort für das zu suchen, so tut mir leid, wenn es ein repost ist.

{ 
    "id": 1, 
    "nome": "a", 
    "BI": 123, 
    "morada": "1245" 
}, 
{ 
    "id": 2, 
    "nome": "b", 
    "BI": 123456, 
    "morada": "1p231p2oi3" 
} 

Aufruf nur durch public/api/users/1 gibt mir eine leere Seite, die angeblich würde die id des Benutzers richtig?

Antwort

1

Als einfache Implementierung davon, könnten Sie fügen Datei routes.php:

Route::get("api/users/{id}", function($id) { 
    return App\User::find($id); 
}); 

Ab Laravel 5.2 Framework unterstützt auch model binding:

Route::get('api/users/{user}', function (App\User $user) { 
    return $user; 
}); 

EDIT:

outputing nur bestimmte Attribute:

Route::get('api/users/{user}', function (App\User $user) { 
    return response()->json([ 
     "id" => (int) $user->id, 
     "name" => $user->name 
    ]); 
}); 
+1

Ich würde empfehlen, die rohe Ausgabe des Modells zurückzugeben. Ich würde vorschlagen, sie zu den Feldern zu formatieren, die Sie anzeigen möchten. – ajtrichards

+1

Ja, es war eine einfache Lösung. Sie könnten es auch in Controller setzen, Fractal usw. verwenden ... –

1

Ich schlage vor, etwas wie das unten zu verwenden.

Route::get('api/users/{user}', function ($id) { 
    $user = App\User::first($id); 

    $content = [ 
     'id' => $user->id, 
     'nome' => $user->nome, 
     'BI' => $user->BI, 
     'morada' => $user->morada 
    ]; 

    return response($content, 200) 
        ->header('Content-Type', 'application/json'); 
});