On Wed, Feb 6, 2013 at 4:04 PM, Gabriel Wicke gwicke@wikimedia.org wrote:
On 02/06/2013 11:43 AM, Brad Jorsch wrote:
On Wed, Feb 6, 2013 at 11:54 AM, Gabriel Wicke gwicke@wikimedia.org wrote:
It should be possible to hide optimization details like local DB access vs. an actual HTTP request behind the same interface. A URL-based query interface can support local handlers for specific URL prefixes.
Or the interface can just look like a function call. Which seems a whole lot more straightforward than forcing people to encode a URL in Lua which is then passed to PHP and decoded to determine if it should be sent out as a remote request or looked up in the local DB.
I don't know much Lua, but a function call like this does not seem to be *that* hard to use:
-- Would fetch JSON from -- http://wikidata.org/api/query/?param1=foo%C2%B6m2=bar -- if no local handler is defined and the base URL is in a whitelist jsonObject = JSONRequest("http://wikidata.org/api/query/", { param1="foo", param2="bar" } )
No manual encoding, and URL encoding can be completely skipped if the prefix happens to match a registered local handler. An optional third parameter can pass in a table to specify the request method and other options.
Having a method with a very generic and suggestive name like "JSONRequest" that only works for one long magic value of the first parameter seems like a bad design to me.
Also note it's not actually taking JSON as input, it's taking a Lua table.