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.

#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.
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