2010-06-30 11 views
5

No estoy seguro de cómo debo actualizar las propiedades individuales de un recurso REST. Considere el siguiente ejemplo:¿Cómo debo actualizar un recurso REST?

# HTTP GET to /users/1.xml 
<?xml version="1.0" encoding="UTF-8" ?> 
<response> 
    <user> 
     <id>1</id> 
     <name>John Doe</name> 
     <email>[email protected]</email> 
    </user> 
</response> 

¿Cómo debo facilitar la actualización del correo electrónico de John? Me viene a la mente HTTP PUT, pero estaría dificultando a mis clientes al requerir un XML completo (que coincida con la respuesta HTTP GET) para modificar el recurso.

Los PUT solicitudes método que el entidad cerrado se almacenarán en la suministrado Request-URI. Si el URI de solicitud se refiere a un recurso existente de , la entidad incluida DEBE considerarse como una versión modificada de la que reside en el servidor de origen .

¿Hay alguna otra manera?

Respuesta

7

Si su infraestructura de servidor es suficiente para manejar flexible, que puede hacer:

Request: 
PUT /users/1/email 
Content-Type: text/plain 

[email protected] 

Response: 
200 OK 
Content-Location: /users/1 

Mediante el uso de una URL para hacer referencia al correo electrónico como su propio recurso, se puede poner directamente a él utilizando un formato sencillo como texto/plano En la respuesta, la URL de Ubicación de Contenido le da al cliente una indicación de que el cambio ha tenido un impacto en el recurso del usuario.

El método PATCH también es otra forma de hacer actualizaciones parciales. Este es un método recientemente introducido y todavía no hay formatos estándar para enviar documentos XML diff. Entonces, si tomas este enfoque, no encontrarás mucha guía.

La otra cosa a tener en cuenta es que REST funciona mejor con actualizaciones granulares. Si se ve en la necesidad de realizar este tipo de pequeños cambios, tal vez necesite replantear su arquitectura distribuida.

Cuestiones relacionadas