php artisan make:model Student
Crea también la migration para ese model:
php artisan make:migration create_students_table
Y en esa migration:
$table->string("nombre_completo");
$table->integer("anno");
php artisan migrate
desde el phpmyadmin mete algunos datos de pruebas en esa tabla creada
Crear un resource de respuesta:
php artisan make:resource StudentResource
Y en ese resource en app\Http\Resources\StudentResource.php cambiar la función toArray:
public function toArray($request)
{
// return parent::toArray($request);
return [
'id' => $this->id,
'firstname' => $this->firstname,
'lastname' => $this->lastname,
'email' => $this->email,
'password' => $this->password,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at
];
}
Crear el controllador de la API:
php artisan make:controller APIController
en APIController.php:
...
use App\Http\Resources\StudentResource;
...
public function store(Request $request) {
$student = Student::create($request->all());
return new StudentResource($student);
}
public function show() {
$students = Student::all();
return StudentResource::collection($students);
}
public function showbyid($id) {
$student = Student::find($id);
if ($student) {
return new StudentResource($student);
}
else {
return response()->json([
"Error"=> "No existe registro con el id:".$id
],404);
}
}
public function update(Request $request, $id) {
$student = Student::find($id);
if ($student) {
$student->firstname = $request->firstname;
$student->lastname = $request->lastname;
$student->email = $request->email;
$student->password = $request->password;
$student->save();
return new StudentResource($student);
}
else {
return response()->json([
"Error"=> "No existe registro con el id:".$id
],404);
}
}
public function delete($id) {
$student = Student::find($id);
if ($student) {
$student->delete();
return new StudentResource($student);
}
else {
return response()->json([
"Error"=> "No existe registro con el id:".$id
],404);
}
}
En routes/api.php:
Route::post('/student', 'APIController@store');
Route::get('/student_get', 'APIController@show');
Route::get('/student_get/{id}', 'APIController@showbyid');
Route::put('/student_update/{id}', 'APIController@update');
Route::delete('/student_delete/{id}', 'APIController@delete');
Y ya desde el postman puedes hacer pruebas (antes tienes q arrancar el servidor con php artisan serve).
Si queremos más seguridad que solo usuarios registrados puedan atacar esa API entonces en la tabla Users añadir el campo api_token (hacerlo con migration),
rellenar ese campo con la clave que quieras asignar a cada usuario (por ejemplo: 9OVJZ1o4Hi)
Y en routes/api.php se pondría:
Route::middleware('auth:api')->get('/student_get', 'APIController@show');
Y para llamarlo desde el postman:
http://127.0.0.1:8000/api/student_get?api_token=9OVJZ1o4Hi
Y para chequearlo en el show de APIController.php
public function show(Request $request) {
// dd($request->api_token);
$userAux = User::where('api_token',$request->api_token)->get();
if (count($userAux)>0) {
$students = Student::all();
return StudentResource::collection($students);
}
else {
return "Clave de acceso incorrecta";
}
}
No hay comentarios:
Publicar un comentario