[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PaceServerCollectionSubsets




PaceEntryQuery is a good start on the semantics of client-specified subsets--but what about server-specified subsets? I've thought about it a bit and drafted PaceServerCollectionSubsets.


I believe we should make it clear that the server MAY return a 206 (Partial Content) response even if the client did not ask for a subset. In that case, I believe clients will want to know what they got so that they can form a follow-up query.

In a nutshell, the proposal is: When the result of a collection request is too large, the server should use the modification date and always return the most recently modified items (how many is up to the server). Because clients know what they got, they can request the next few items in that sequence. Note that, for this particular situation, I'm proposing a standardized field to order the collection, and that we always proceed from most recent to least recent.

This may seem particular and inflexible as a general query language, but if we think of it instead as a syncing protocol, it serves precisely the need: a client just wants to know, "Which items should I GET? Which items have changed since the last time we talked?" The proposal allows the client to iterate over the most-recently-modified items until it reaches the date at which it last sync'd. At that point it knows it has a complete list, up through the time when it made the first request.

This doesn't conflict with allowing clients to specify ranges over an arbitrary field. This just sets the understanding when a server returns less than what the client requested.

Thoughts?

Ezra