On 4 Mar 2009, at 16:16, Jan Lehnardt wrote:

On 4 Mar 2009, at 05:15, Chris Anderson (JIRA) wrote:

Points of discussion:

If we want to change the names of any of: _view, _show, _list, or _design now is a good time to do it. We've been over the names _list and _show many times, and while they aren't perfect, they are short, and more-or-less descriptive of what they do.

I'd still love to see _render/ used for both docs and views.

/db/_design/foo/_render/renderfun/docid
/db/_design/foo/_render/renderfun/viewname

The problem with this of course is that the docid namespace gets polluted with viewnames (or vice versa) and 404-handling will prove to be tricky. _-prefixing viewnames would be one option, but then you can't have views named "design", heh :)

/db/_design/foo/_render/renderfun/docid
/db/_design/foo/_render/renderfun/_viewname

I also prefer _render. How about doing the analogous to what we do for JSON docs and views, i.e. something like:

/db/_design/foo/_render/renderfun/docid
/db/_design/foo/_render/renderfun/_view/viewname

This would work at the moment because slashes in the docid URL are URL- encoded, i.e. in the (unlikely) event of a doc with an id of "_view/ viewname", it would be rendered via _render/renderfun/_view %2Fviewname, hence no collisions. Even if we were to allow unescaped slashes in the docid URL e.g. _render/renderfun/foo/bar/baz/ where the docid is "foo/bar/baz/", we still maintain _* as a reserved namespace so there's no danger of anyone creating a document with docid "_view/ *", hence I think is pretty future-proof in that sense.



Another possibility would be requiring prefixes for render functions:

/db/_design/foo/_render/doc-renderfun/docid
/db/_design/foo/_render/view-renderfun/viewname

not neat, but better than _list and _show.

The new URL layout might enable other solutions that I don't see yet.



The code is robust about changes to the _design db handler's name. That is, we could continue to call them design docs, and store them with ids like "_design/name", while changing the resource root so that the above set of URLs could be something like (modulo an attachments handler, "_files" here, for clarity):

/db/_baz/foo/_view/bar?limit=10
/db/_baz/foo/_show/docid
/db/_baz/foo/_files/index.html

Before we commit / before 0.9.0:

This patch is a big enough change that I think we should vote on it before I commit it. However, I'd like to get it in before 0.9.0 to avoid future confusion where trunk is incompatible with API clients and applications designed to run on our latest release.

+1 (for the general idea of the patch after refining the API).

+1 FWIW :-)

--
Jason Davies

www.jasondavies.com

Reply via email to