UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE
EXTENSIÓN LATACUNGA
DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
INGENIERÍA DE SOFTWARE
CERTIFICACIÓN I
STATUS HTTP
SALGUERO BARRIONUEVO JASSON ALEXANDER
MAYO 2020 – SEPTIEMBRE 2020
LATACUNGA – ECUADOR
STATUS HTTP
➢ POST con la creación de un registro debe retornar 201 Created
Método Create de PostTodoItem
Reemplace la instrucción return en PostTodoItem para usar el operador nameof:
C#
// POST: api/TodoItems
[HttpPost]
public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem
todoItem)
{
_context.TodoItems.Add(todoItem);
await _context.SaveChangesAsync();
//return CreatedAtAction("GetTodoItem", new { id = todoItem.Id },
todoItem);
return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id
}, todoItem);
}
El código anterior es un método HTTP POST, indicado por el atributo [HttpPost]. El
método obtiene el valor de tareas pendientes del cuerpo de la solicitud HTTP.
El método CreatedAtAction realiza las acciones siguientes:
• Devuelve un código de estado HTTP 201 cuando se ha ejecutado
correctamente. HTTP 201 es la respuesta estándar para un método HTTP POST
que crea un recurso en el servidor.
• Agrega un encabezado Location a la respuesta.
El encabezado Location especifica el URI de la tarea pendiente recién creada.
• Hace referencia a la acción GetTodoItem para crear el identificador URI del
encabezado Location. La palabra clave nameof de C# se usa para evitar que se
codifique de forma rígida el nombre de acción en la llamada a CreatedAtAction.
Instalación de Postman
En este caso se usa Postman para probar la API web.
• Instalar Postman.
• Iniciar la aplicación web.
• Iniciar Postman.
• Deshabilitar Comprobación del certificado SSL.
o En Archivo > Configuración (pestaña General), deshabilite Comprobación
del certificado SSL.
Vuelva a habilitar la comprobación del certificado SSL tras probar el controlador.
Prueba de PostTodoItem con Postman
• Cree una nueva solicitud.
• Establezca el método HTTP en POST.
• Seleccione la pestaña Cuerpo.
• Seleccione el botón de radio Raw (Sin formato).
• Establezca el tipo en JSON (application/json) .
• En el cuerpo de la solicitud, introduzca JSON para una tarea pendiente:
JSON
{
"name":"walk dog",
"isComplete":true
}
• Seleccione Enviar.
Prueba del URI del encabezado de ubicación
• Seleccione la pestaña Encabezados en el panel Respuesta.
• Copie el valor de encabezado Ubicación:
• Establezca el método en GET.
• Pegue el URI (por ejemplo, https://localhost:5001/api/TodoItems/1).
• Seleccione Enviar.
Examen de los métodos GET
Estos métodos implementan dos puntos de conexión GET:
• GET /api/TodoItems
• GET /api/TodoItems/{id}
Llame a los dos puntos de conexión desde un explorador o Postman para probar la
aplicación. Por ejemplo:
• https://localhost:5001/api/TodoItems
• https://localhost:5001/api/TodoItems/1
La llamada GetTodoItems genera una respuesta similar a la siguiente:
JSON
[
{
"id": 1,
"name": "Item1",
"isComplete": false
}
]
Prueba de Get con Postman
• Cree una nueva solicitud.
• Establezca el método HTTP en GET.
• Establezca la dirección URL de la solicitud
en https://localhost:<port>/api/TodoItems. Por
ejemplo: https://localhost:5001/api/TodoItems.
• Establezca Vista de dos paneles en Postman.
• Seleccione Enviar.
Esta aplicación utiliza una base de datos en memoria. Si la aplicación se detiene y se
inicia, la solicitud GET precedente no devolverá ningún dato. Si no se devuelve ningún
dato, publique los datos en la aplicación con POST.
➢ El error HTTP 400 Bad Request
En el caso del error HTTP 400 no es fácil dilucidar por qué se ha producido, si bien
básicamente algo ha ido mal en la petición. El protocolo de Internet HTTP no se ha
cumplido de manera correcta, al menos según el servidor web, por lo que la petición no
puede procesarse. En este sentido, las causas pueden estar relacionadas con el
navegador empleado o se pueden atribuir a un error por parte del usuario:
• Dirección URL incorrecta: al igual que el error 404, un error 400 Bad Request
se produce cuando los usuarios introducen una dirección incorrecta y, por
ejemplo, insertan caracteres especiales ilícitos.
• Cookies con errores: el error 400 también puede surgir cuando las cookies de
un navegador están obsoletas o contienen errores.
• Registros DNS obsoletos: puede que la caché del DNS contenga archivos que
remitan a direcciones IP falsas.
• Archivos muy grandes: cuando se intenta cargar archivos muy grandes, el
servidor puede negarse a aceptarlos, lo que también es considerado como un
error HTTP 400.
• Encabezados muy largos: durante la comunicación, el cliente y el servidor
utilizan encabezados en los que se define la petición y algunos servidores web
establecen un límite mayor para la longitud de estos encabezados.
Con el error Bad Request 400 tampoco es sencillo deducir directamente en qué punto
de la comunicación ha surgido el problema. En caso de usar un servidor web IIS 7.0, IIS
7.5 o IIS 8.0, se pueden extraer ciertos datos del código de estado:
• 400.1: destination header inválido
• 400.2: depth header inválido
• 400.3: if header inválido
• 400.4: overwrite header inválido
• 400.5: translate header inválido
• 400.6: request body inválido
• 400.7: longitud del contenido inválida
• 400.8: timeout inválido
• 400.9: lock token inválido
El error 400 no solo aparece cuando se utiliza un navegador, sino que hay otros
programas, como los clientes de correo electrónico, que también pueden recibir este
código de estado a la hora de comunicarse con un servidor.
Solucionar el 400 Bad Request
Como ocurre con la mayoría de códigos de estado que muestran un mensaje de error,
en muchos casos es suficiente con refrescar la página. Puede que el problema sea
temporal si es la primera vez que el error aparece en una página que normalmente no
suele presentar ningún fallo, pero si el error persiste una vez actualizada la página,
puede que la solución sea borrar la caché del navegador.
Dirección URL incorrecta
El siguiente paso para el análisis del problema debe ser revisar la dirección URL: es
recomendable que compruebe que no haya ningún error ortográfico.
Cookies con errores
El problema también puede deberse a la presencia de cookies obsoletas o que
contengan errores. Para solucionarlo se debe eliminar el registro correspondiente en el
navegador y cuando se vuelve a visitar la página, el software deposita una cookie nueva.
Registros DNS erróneos
Otra posible solución a la que se puede recurrir en caso de que aparezca el error 400
es la de eliminar la memoria caché del DNS. Cuando se navega por Internet, los
nombres de dominio introducidos se traducen en direcciones IP, pues solo de esta
manera se puede establecer la conexión en la World Wide Web.
Si la entrada está defectuosa o desactualizada aparecerá el mensaje “HTTP Bad
Request”. Para eliminar la entrada defectuosa se debe borrar la caché DNS completa, lo
que se puede lograr en Windows a través del símbolo del sistema introduciendo el
siguiente comando:
ipconfig /flushdns
En los sistemas Mac el comando depende de la versión del sistema operativo. Introduce
el correspondiente en el terminal:
• OS X 10.4 (Tiger): lookupd -flushcache
• OS X 10.5 (Leopard): dscacheutil -flushcache
• OS X 10.6 (Snow Leopard): dscacheutil – flushcache
• OS X 10.7 (Lion): sudo killall -HUP mDNSResponder
• OS X 10.8 (Mountain Lion): sudo killall -HUP mDNSResponder
• OS X 10.9 (Mavericks): dscacheutil -flushcashe; sudo killall -HUP mDNSResponder
• OS X 10.10 (Yosemite) (10.10.1 – 10.10.3): sudo discoverutil udnsflashcaches
• OS X 10.10 (Yosemite) (10.10.4+): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
• OS X 10.11 (El Capitan): sudo killall -HUP mDNSResponder
• macOS 10.12 (Sierra): sudo killall -HUP mDNSResponder
Problemas con los campos del encabezado HTTP
- Para usuarios: eliminar las cookies y reiniciar el navegador
El error HTTP 400 también aparece cuando el encabezado HTTP es muy largo. Aunque
en principio no existe límite de tamaño, puede darse el caso de que el servidor de destino
sí haya fijado uno.
En caso de que esto no funcione, aparece un mensaje de error. Puesto que se trata de
una comunicación entre el navegador y el servidor web y los Bad Request 400 surgen
debido a problemas con el cliente, es probable que el navegador sea el responsable. En
este sentido, la mejor manera de comprobar si el navegador estándar es el causante del
problema es utilizando otro navegador temporalmente.
En Chrome la función para restaurarlo se encuentra en los ajustes del sistema. El
navegador almacena los datos personales de los usuarios como, por ejemplo, las
contraseñas y el historial, y luego lo restaura todo y lo devuelve a su estado original.
Cierra el navegador y reinícialo para que se apliquen los cambios.
- Para webmasters: ampliar los límites
Si es un webmaster y hay visitas que se han quejado de la presencia del error HTTP
code 400, puede ser de ayuda modificar los ajustes del servidor. Para que los usuarios
no tengan que recibir este mensaje de error debido a un encabezado HTTP de gran
tamaño, puedes ampliar el límite, pero teniendo en cuenta que con unos límites más
amplios también puede aumentar el riesgo de recibir peticiones con errores. La Internet
Engineering Task Force (IETF) aborda el código de error 400 en su documentación
sobre HTTP 1.1 y advierte del riesgo que suponen los límites amplios (smuggling
attacks)
REFERENCIAS
https://docs.microsoft.com/es-es/aspnet/core/tutorials/first-web-api?view=aspnetcore-
3.1&tabs=visual-studio
https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/el-error-http-400-
encuentra-sus-causas/
https://kinsta.com/es/base-de-conocimiento/400-bad-request/
https://www.profesionalreview.com/2019/10/19/error-400-bad-request/