Según HTTP 1.1. especificaciones:REST: cómo gestionaría una solicitud PUT los identificadores de recursos de incremento automático
Si el Request-URI no apunta a un recurso existente, y que URI es capaz de ser definido como un nuevo recurso por el agente usuario solicitante, el servidor de origen puede crear el recurso con el que se URI.
En otras palabras, PUT se puede utilizar para crear la actualización &. Más específicamente, si hago una solicitud PUT, p.
PUT /users/1
y que el usuario no existe, yo esperaría que el resultado de esta solicitud para crear un usuario con este ID. Sin embargo, ¿cómo funcionaría esto si tu back-end está usando una clave de autoincremento? ¿Sería un caso de simplemente ignorarlo si no es factible (por ejemplo, el incremento automático es a las 6 y solicito 10) & creando si es posible (por ejemplo, solicitud 7)?
Desde el fragmento que he extractado arriba, parece que le da esta flexibilidad, solo en busca de alguna aclaración.
Mi API REST actualmente es compatible con POST, pero también quiero admitir PUT para permitir actualizaciones. Entonces, para evitar la complicación de pasar identificadores únicos desde el lado del cliente, ¿debería simplemente devolver un 404 si el recurso no existe en lugar de intentar crearlo? ¿Esto todavía se consideraría RESTful? – James
Sí, 'PUT' está diseñado para actualizaciones. Si el URI al que se envía el PUT no se refiere a un recurso disponible, entonces es razonable devolver un 404. Si es REST/JSON, puede incluir un mensaje de error en formato json en el cuerpo del mensaje de la respuesta. '{" error ":" el recurso no existe. "}'. Pero en realidad, enviar información en el cuerpo del mensaje es apropiado solo si se agrega a la información que transmite el código de estado. Si "No existe" es el mensaje, entonces 404 es suficiente, y no es necesario el cuerpo del mensaje. – Cheeso
Genial, realmente con 'PUT' tienes la opción de si quieres crear o no (que es lo que realmente estaba buscando aclarar). Al pensar en mi escenario, 'PUT' se usará puramente para actualizar (si el recurso existe). ¡Gracias! – James