0

He hecho una página web en laravel para almacenar cursos con estudiantes con sus respectivos datos. La cuestión es que ahora quiero obtener los alumnos y esos datos en formato JSON para poder testearlo con Postman, pero no sé hacerlo.

Este es mi método show de mi controlador Student que lo que hace es dado un curso mostrar todos los estudiantes que hay en ese curso:

public function show(Course $course)
    {
        $students = $course->students()->get();
        return view('Course.show',compact('students','course'));
    }

La url que aparece en mi navegador es: http://tfg.test/courses/25 ya que lo tengo en local. Si hago una petición get con Postman a esa url, lo que me devuelve es la página entera en html, pero no me devuelve el json con la información.

Esta es la ruta que he creado en mi archivo web.php

Route::resource('courses', CourseController::class);

Gracias de antemano.

2 respuestas 2

0

En este caso se debe modificar el valor de retorno en el controlador:

use Response;
...
...
public function show(Course $course)
{
    $students = $course->students()->get();
    return response()->json($students, 200);
}

De esta manera se leera el formato correcto, y no se verá una vista html.

0

Debes de retornar un formato JSON en lugar de una vista, adicionalmente puedes encerrarlo dentro de un try - catch.

    use Illuminate\Http\Response;
    public function show() {
            try {
                $students = $course->students()->get();
    
                return response()->json([
                    'success' => true
                    'students ' => $students,
                ], 200);
    
            } catch (\Exception $e) {
                return response()->json([
                    'success' => false,
                    'error'   => $e
                ],500);
            }
    }

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.