2011-10-23 9 views
6

que tienen recursos como ésteRange Header HTTP para Entidad enumera

/entities  # GET, POST 
/entities/<id> # GET, PUT, DELETE 

GET/entidades obtiene la lista de todas las entidades. Ahora quiero buscar actualizaciones. El caso para una sola entidad es sencillo:

GET /entities/2 
If-Modified-Since: <http date> 

La lista es complicada. Quiero que la respuesta sea una lista de entidades, actualizadas o creadas desde un punto determinado en el tiempo. Me gustaría utilizar intuitivamente

GET /entities 
Range: after <http date> 

¿Qué es una solicitud válida por la especificación HTTP http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2. Pero la especificación también exige una respuesta 206 Partial Content, que debe incluir un encabezado Content-Range. Un encabezado Content-Range, a su vez, impone un rango de bytes que se debe especificar http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16. Esto es obviamente muy inconveniente para mi caso de uso.

¿Cómo solicitaría un rango semántico a través de HTTP?

+0

son '¿Seguro Range' se puede utilizar con una fecha? La sección 14.35.1 solo analiza los rangos de bytes. –

+0

Estoy de acuerdo con @adrift, no puedo encontrar ninguna referencia en cualquier RFC a 'Rango: después de ' siendo válido en HTTP/1.1 - si lo fuera, el encabezado 'Content-Range:' se definiría para acomodarlo, de lo contrario, la práctica solo se definiría a la mitad. – DaveRandom

+0

La especificación Httpbis parece tener un poco más de detalles sobre rangos no byte http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-16 –

Respuesta

2

De la lectura de la sección 14.35.1, diría que el encabezado Range se utiliza para solicitar un rango específico de bytes de un recurso, no para solicitar un grupo de entidades según el momento en que se modificaron.

En este caso, creo que usted debe tratar a su rango como un filtro y pasar la fecha como un parámetro de cadena de consulta:

GET /entities?modified-since=<date> 
+0

Eso es lo que concluí también. Los rangos no byte parecen permitirse por compatibilidad futura, pero muy poco especificados. – Bendlas