¿Qué código de estado HTTP debería volver a POST cuando no se crea ningún recurso?

CYP:

Estoy publicar una imagen a mi servidor (usign Java y primavera).

Un par de cosas puede suceder:

  • Si todo va bien, entonces vuelvo 200y el ID de imagen.
  • La imagen no se puede guardar en el sistema de archivos ( SaveFileException).
  • La base de datos no puede actualizar el nuevo registro de imagen con la nueva dirección URL ( DatabaseException).
  • O lanzará una IOException.

En resumen, no puedo guardar / crear la imagen.

Qué código HTTP debería volver?

Debería devolver más de un código y más de un mensaje de acuerdo con el Exception?

cassiomolin:

En primer lugar, quisiera destacar que los códigos de estado tienen el propósito de indicar el resultado del intento del Sever para comprender y satisfacer la petición del cliente.

Si todo va bien, entonces vuelvo 200y el ID de imagen.

Parece estar bien, pero yo le aconsejo que regrese 201junto con una Locationcabecera en su lugar. Citando al RFC 7231 en relación con el POSTmétodo:

Si uno o más recursos ha sido creado en el servidor de origen como resultado de procesar con éxito una POSTsolicitud, el servidor de origen debe enviar una 201respuesta (Creado) que contiene un Locationcampo de cabecera que proporciona un identificador para el recurso primario creado y una representación que describe el estado de la solicitud, al referirse al nuevo recurso (s).

Junto con 201, la Locationcabecera está destinado a indicar dónde se encuentra el recurso recién creado. Si no Locationse proporciona cabecera, a continuación, el cliente debe asumir que el recurso es identificado por el URI de la solicitud efectiva:

6.3.2. 201 Creado

El 201(Creado) código de estado indica que la solicitud se ha cumplido y ha resultado en uno o más nuevos recursos que están siendo creados. El principal recurso creado por la solicitud se identifica por un Locationcampo de cabecera en la respuesta o, si no Locationse recibe campo, por la petición URI efectiva. [...]


error del cliente

El cliente puede realizar una nueva solicitud y solucionar el problema? Si es así, elija un código de estado en el 4xxrango:

6.5. 4xx Error de cliente

El 4xx(Error de cliente) de clase de código de estado indica que el cliente parece haber errado. Excepto al responder a una HEADsolicitud, el servidor debe enviar una representación que contiene una explicación de la situación de error, y si se trata de una condición temporal o permanente. Estos códigos de estado son aplicables a cualquier método de petición.

Michael Kropat armó una muy útil conjunto de diagramas de flujo que pueden dar algunas insighsts. Véase la siguiente tabla para determinar el más adecuado 4xxcódigo de estado:

La elección de un código de estado 4xx

Algunas opciones válidas, dependiendo de la causa del error, son los siguientes:

6.5.11. 413 Carga demasiado grande

The 413 (Payload Too Large) status code indicates that the server is refusing to process a request because the request payload is larger than the server is willing or able to process. [...]

6.5.13. 415 Unsupported Media Type

The 415 (Unsupported Media Type) status code indicates that the origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource. The format problem might be due to the request's indicated Content-Type or Content-Encoding, or as a result of inspecting the data directly.

6.5.1. 400 Bad Request

The 400 (Bad Request) status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).


Server error

If the error was caused by the server, then a status code in the 5xx range will be accurate:

6.6. Server Error 5xx

The 5xx (Server Error) class of status code indicates that the server is aware that it has erred or is incapable of performing the requested method. Except when responding to a HEAD request, the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition.

See the following flowchart:

La elección de un código de estado 5xx

I would suggest 500:

6.6.1. Error interno de servidor 500

El 500(Internal Server Error) código de estado indica que el servidor encontró una condición inesperada que le impidió cumplir con la solicitud.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=137251&siteId=1
Recomendado
Clasificación