[OSM-dev] API id placeholders
Lars Aronsson
lars at aronsson.se
Sun May 6 11:25:26 BST 2007
SteveC wrote:
> It's not id='create', it's the URL for node creation is
> /api/0.4/node/create rather than /api/0.4/node/0. It's a nicer
> URL.
Is it only the URL, or also the message "payload" body? The wiki
page [[OSM Protocol Version 0.4]] is not yet clear about this. I
assumed it was s/0/create/ in both places.
> Is it beyond you to fix it also?
I actually think I could fix this, maybe not in five minutes but
eventually. What I'm asking is simply if there is any policy or
religion that would stop this from being acceptable. The change
from 0 to create seems totally pointless to me, and that this
change is being introduced appears to indicate puritanism and/or
religion rather than rational thinking.
Of course I understand that there are issues with error handling,
as Frederik points out. However, this doesn't have to be much
harder than doing the same thing that is now being done in JOSM,
only moving the loop to the server side.
Current behaviour:
User: presses "upload"
JOSM: starts a loop, sending each update to the server
Server: executes each update as it arrives
JOSM: receives each response,
updates its internal data structures,
decides whether to continue after an error
User: has to accept whatever JOSM decided about errors
New behaviour:
User: presses "upload"
JOSM: sends a single bundle of requests to the server
Server: starts a loop, executing each update in sequence,
decides whether to continue after an error
JOSM: receives a single bundle of responses,
starts a loop to update its internal data structures,
has to accept whatever the server decided about errors
Since the introduction of a "bundle" call doesn't change anything
in existing protocol calls, the change would be fully backwards
compatible. It follows that it is quite acceptable if the new
call has some restrictions, e.g. if it handles at most 50 objects,
or if it only handles creation, or only handles updates, or only
handles objects of one kind (e.g. node creation). All it really
needs to do is provide some kind of performance speedup for the
most commonly occuring case. If one bundle call can create 50
nodes, another bundle call can create 49 line segments, and a
third (non-bundle) call is required to create a way, this is 3
calls instead of today's API requiring 100 calls. If the ping
roundtrip time is 140 ms, the time gained in roundtrip alone (HTTP
and API setup overhead ignored) would be 13.5 seconds.
Please correct me if I have misunderstood something.
--
Lars Aronsson (lars at aronsson.se)
Aronsson Datateknik - http://aronsson.se
More information about the dev
mailing list