Estoy en el medio de la implementación de una API RESTful, y no estoy seguro del comportamiento 'aceptado por la comunidad' para la presencia de datos que no pueden cambiar. Por ejemplo, en mi API hay un recurso 'archivo' que cuando se crea contiene una cantidad de campos que no se pueden modificar después de la creación, como los datos binarios del archivo y algunos metadatos asociados. Además, el 'archivo' puede tener una descripción escrita y etiquetas asociadas.Diseño de API RESTful: ¿deberían ser opcionales los datos no modificables en una actualización (PUT)?
Mi pregunta se refiere a hacer una actualización de uno de estos recursos de 'archivo'. Un GET de un 'archivo' específico devolverá todos los metadatos, las etiquetas de descripción & asociadas con el archivo, más los datos binarios del archivo. ¿Debería un PUT de un recurso 'archivo' específico incluir los campos 'solo lectura'? Me doy cuenta de que puede codificarse de cualquier manera: a) incluir los campos de solo lectura en los datos PUT y luego verificar que coincidan con el original (o emitir un error) ob) ignorar la presencia de los campos de solo lectura en los datos PUT porque no pueden cambiar, nunca emiten un error si no coinciden o faltan porque la lógica los ignora.
Parece que podría ir de cualquier manera y ser aceptable. El segundo método para ignorar los campos de solo lectura puede ser más compacto, porque el cliente API puede omitir el envío de datos de solo lectura si así lo desean; lo que parece bueno para las personas que saben lo que están haciendo ...
Solo una nota: Roy Fielding dice que PUT no debe usarse para actualizaciones parciales. http://tech.groups.yahoo.com/group/rest-discuss/message/17421 Para actualizaciones parciales, use POST. PUT se usa para * reemplazar * el recurso en la URL dada. Ver también: http://stackoverflow.com/a/2443344/48082 http://stackoverflow.com/a/2391954/48082 – Cheeso