es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es la respuesta Http 207 MULTI-STATUS apropiada para operaciones multitarea?

He descubierto que Http 207 se puede usar para operaciones de inserción/eliminación en masa, etc., donde potencialmente tenemos varios elementos que se insertan y el éxito parcial es aceptable desde la perspectiva comercial.

Me pregunto si lo mismo se aplica si llamamos a una API Post que llama a algunos servicios externos.

Ejemplo de escenario empresarial:

Tenemos un endpoint HttpPost que está creando un pedido.

HttpPost:
/api/order/

Ahora supongamos que este endpoint, además de crear un Pedido, también va a llamar a un servicio externo para imprimir una etiqueta para ese pedido y otro para enviar algún tipo de confirmación a través de REST a un sistema externo de terceros.

En este escenario, asumimos que la creación del Pedido es imprescindible para el éxito de esta operación, pero tanto la impresión como la llamada REST externa pueden devolver un mensaje de error, que potencialmente está fuera de nuestro control.

Según lo que he leído, las opciones sobre cómo devolver esta información serían:

  1. Http 200 con algún tipo de objeto que contenga la información necesaria. Por ejemplo:
{
  "isSucess": true,
  "isFailure": true,
  "erorMesage": "string"
}
  1. Hacer que el endpoint sea más RESTful y separarlo en 3 acciones que serían llamadas, pero en este caso esto no es aplicable (al menos desde mi perspectiva) porque todas esas cosas están estrechamente vinculadas desde la perspectiva comercial y deberían estar unidas.

  2. Devolver un error 5xx. Por ejemplo, 502 ya que no todas las acciones tuvieron éxito y hubo algunos problemas internos, pero ¿qué pasa si una acción fallida es 502 y otra 503?

  3. Devolver un error 207 con una respuesta de error adecuada para cada una de las acciones (Creación del Pedido: 200, Impresión: 502, Tercer sistema externo: 502)

Ahora me pregunto cuál sería más adecuado. Estoy inclinado hacia un error 502 o 207, ya que en mi opinión proporcionan más información sobre el estado real del sistema.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en REST, servicios web y códigos de estado HTTP, recomendaría utilizar el código de estado HTTP 207 para este escenario. Este código de estado se puede utilizar para operaciones masivas en las que se procesan varios elementos, y desde una perspectiva empresarial se acepta un éxito parcial. En este caso, la creación del pedido es obligatoria para el éxito de la operación, pero la impresión y la llamada de REST externa pueden devolver mensajes de error que pueden estar fuera de nuestro control.

    También podría ser una opción devolver un código de estado HTTP 200 con un objeto que contenga la información necesaria, pero podría ser menos informativo que el código de estado HTTP 207. Separar el punto final en tres acciones no sería adecuado porque todas esas acciones están estrechamente vinculadas desde una perspectiva empresarial y deben estar unidas.

    Devolver un error 5xx, como el 502, podría proporcionar alguna información sobre los problemas internos, pero no especificaría qué acción ha fallado. Por otro lado, devolver un error 207 con una respuesta de error adecuada para cada acción (Creación de pedido: 200, Impresión: 502, Terceros externos: 502) proporcionaría la mayor información sobre el estado real del sistema y qué acción ha fallado, proporcionando más contexto sobre la falla.

    En conclusión, recomendaría utilizar el código de estado HTTP 207 con una respuesta de error adecuada para cada acción para proporcionar la mayor información sobre el estado real del sistema y qué acción ha fallado, lo que facilita la depuración del problema.

Comments are closed.