Negociación de tipos de contenido simplificada: método prefers de Laravel

  • Publicado el 26 noviembre, 2024
  • Palabras: 100

¿Alguna vez necesitaste ofrecer distintos tipos de contenido según lo que desea su cliente? ¡El método prefers de Laravel facilita la negociación de contenido! Exploremos cómo esta función simple pero poderosa puede mejorar la flexibilidad de su aplicación.

Negociación de tipos de contenido simplificada: método prefers de Laravel

#Comprendiendo prefers

El método prefers le ayuda a determinar qué tipo de contenido prefiere su cliente de un conjunto determinado de opciones:

 

$preferred = $request->prefers(['text/html', 'application/json']);

 

Si el cliente acepta uno de estos tipos, obtendrá ese tipo de vuelta. Si no se acepta ninguno, obtendrá un valor nulo.

#Uso básico

He aquí un ejemplo sencillo de cómo utilizarlo:

 

public function show(Request $request, Post $post)
{
    $preferred = $request->prefers(['text/html', 'application/json']);

    if ($preferred === 'text/html') {
        return view('posts.show', compact('post'));
    }

    if ($preferred === 'application/json') {
        return response()->json($post);
    }

    return response('Not Acceptable', 406);
}

 

#Ejemplo práctico

Creemos un punto final de API versátil que pueda servir tanto a navegadores web como a clientes de API:

 

class ArticleController extends Controller
{
    public function show(Request $request, Article $article)
    {
        $preferred = $request->prefers([
            'text/html',
            'application/json',
            'application/xml'
        ]);

        return match($preferred) {
            'text/html' => view('articles.show', compact('article')),
            'application/json' => response()->json([
                'data' => $article,
                'meta' => [
                    'views' => $article->view_count,
                    'created' => $article->created_at->diffForHumans()
                ]
            ]),
            'application/xml' => response()
                ->view('articles.xml', compact('article'))
                ->header('Content-Type', 'application/xml'),
            default => response('Not Acceptable', 406)
        };
    }
}

 

El método prefers de Laravel simplifica la negociación de contenido, lo que facilita la creación de puntos finales flexibles que pueden servir a diferentes tipos de clientes de manera efectiva.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión