Tengo una API REST que para algunas empresas como DELETE, POST o PUT, tengo algunas reglas de validación que pueden devolver un error.
Ahora necesito un nuevo tipo de error, como un error no crítico, que debería fallar de manera normal, pero debería ir a la acción si hay un envío de banderas de "advertencias de supresión". Se le puede preguntar a dicho usuario: "¿Está seguro de que desea cambiar este estado? Todavía no ha terminado"
Pregunta : ¿existe una mejor práctica para este tipo de errores?
Preguntas secundarias :
- ¿Hay alguna semántica HTTP para tal comportamiento que pueda usar?
- ¿Todavía sigo la idea REST (para mí parece que sí) - Lo mantengo sin estado
rm /file
"advierte" que el archivo es de solo lectura mientras lo borra de todos modos.409 CONFLICT
para la respuesta de advertencia. De esta forma, se le indica al cliente que puede forzar la llamada con el mismo punto final y el mismo cuerpo con un parámetro adicional "force = 1"Respuestas:
No hay códigos de resultado de advertencia en http, puede devolver un éxito (200) o un error (400, 500). Lo único que sé de eso podría ser análogo a lo que quieres es algo como el código 401 'no autorizado', que es una falla absoluta, pero hace que la mayoría de los clientes vuelvan a intentar conectarse automáticamente con credenciales.
Para una API REST, debe informar al servidor el estado de la solicitud y cómo manejar el resultado; no puede enviar un PUT y esperar un error si el cliente no está terminado, o éxito si lo ha hecho, el servidor necesita saber esto. información para devolver el código de resultado correcto.
Por lo tanto, puede enviar el indicador 'suprimir advertencias' con su solicitud, si no está configurado, el servidor devolverá un código de error 409 (o similar), y si está configurado, devolverá un código 200 en su lugar. No se le puede preguntar al usuario "¿Desea cambiar este estado?" Después de enviar el cambio de estado.
Puede hacer una solicitud al servidor para preguntar si el usuario puede cambiar el estado del curso y seguir con una solicitud adecuada después de eso.
fuente
Si desea permitir que el usuario anule su manejo normal de errores, puede considerar devolver un estado de ÉXITO 200 con información adicional en los encabezados HTTP extendidos. Por ejemplo, podrías regresar
Esto le daría a su código del lado del cliente la información necesaria para advertir al usuario o tomar medidas correctivas por sí mismo.
fuente