1-2-Estructura de la Solicitud HTTP
Estructura de la Solicitud HTTP
GET /usuarios HTTP/1.1 ← Línea de inicio (Request Line)
Host: mipagina.com ←
Content-Type: application/json ←
Authorization: Bearer token123 ← HEADERS (Cabeceras)
User-Agent: Mozilla/5.0... ←
← Línea en blanco (separador)
{"nombre": "Juan"} ← BODY (Cuerpo)Desglose Detallado:
1. Línea de Inicio (Request Line)
GET /usuarios HTTP/1.1
Método: GET
Path: /usuarios
Protocolo: HTTP/1.1
2. HEADERS (Cabeceras) - ¡Esta es la parte que preguntas!
Host: mipagina.com Content-Type: application/json Authorization: Bearer token123 User-Agent: Mozilla/5.0...
Los headers son todas las líneas que están después de la Request Line y antes de la línea en blanco.
3. Línea en Blanco
(espacio vacío)
Esta línea separa los headers del body - es crucial en el protocolo HTTP.
4. BODY (Cuerpo)
{"nombre": "Juan"}Solo presente en métodos como POST, PUT, PATCH.
Ejemplos Prácticos en Laravel:
Accediendo a estos Headers en Laravel:
Route::post('/usuarios', function(Request $request) { // Obtener headers específicos $host = $request->header('Host'); // 'mipagina.com' $contentType = $request->header('Content-Type'); // 'application/json' $authorization = $request->header('Authorization'); // 'Bearer token123' $userAgent = $request->header('User-Agent'); // 'Mozilla/5.0...' // Obtener todos los headers $todosLosHeaders = $request->headers->all(); // Obtener el token del header Authorization $token = $request->bearerToken(); // 'token123' return response()->json([ 'host' => $host, 'content_type' => $contentType, 'token' => $token, 'user_agent' => $userAgent ]); });
Headers Comunes y su Uso:
public function miEndpoint(Request $request) { // Headers de Autenticación $token = $request->bearerToken(); $apiKey = $request->header('X-API-Key'); // Headers de Contenido $contentType = $request->header('Content-Type'); $accept = $request->header('Accept'); // Qué formato espera el cliente // Headers de Caché $cacheControl = $request->header('Cache-Control'); // Headers Personalizados $customHeader = $request->header('X-Mi-Header'); // Verificar si el cliente acepta JSON if ($request->wantsJson()) { return response()->json(['message' => 'OK']); } }
Enviar Headers en Respuesta:
public function crearUsuario(Request $request) { $user = User::create($request->all()); return response() ->json($user, 201) ->header('X-Custom-Header', 'Valor') ->header('Location', url('/usuarios/' . $user->id)) ->header('Content-Type', 'application/json; charset=utf-8'); }
Ejemplo Real de una API:
// El cliente envía esta solicitud: // POST /api/usuarios HTTP/1.1 // Host: miapi.com // Content-Type: application/json // Authorization: Bearer eyJhbGciOiJIUzI1NiIs... // Accept: application/json // // {"name": "Ana", "email": "ana@ejemplo.com"} Route::post('/api/usuarios', function(Request $request) { // Verificar header de autorización if (!$request->bearerToken()) { return response()->json(['error' => 'No autorizado'], 401); } // Verificar que el contenido sea JSON if ($request->header('Content-Type') !== 'application/json') { return response()->json(['error' => 'Content-Type debe ser JSON'], 415); } // Procesar la solicitud $data = $request->validate([ 'name' => 'required', 'email' => 'required|email' ]); $user = User::create($data); return response() ->json($user, 201) ->header('X-User-ID', $user->id); });
En resumen: Los headers son todas las líneas entre la primera línea (Request Line) y la línea en blanco que separa del body. ¡Son fundamentales para controlar el comportamiento de la solicitud HTTP!
Comentarios
Publicar un comentario