I’m using the CRUD pattern as a starting point for all the major sub-systems’ APIs. My hope is that this will have a number of positive effects:

Minimize API design hand-wringing

Provide a large base of functionality quickly

Make it easy for Chromium developers to add new APIs

Make it easy for extension developers to learn new APIs

I got this all working for a few methods, and then I got to writing the validation code. I could write the code by hand, but that’s so much work. And why bother when somebody has gone and invented JSON Schema.

That’s right, it’s a schema language for JSON. And of course it has a schema, written in JSON schema. Whee!

So we should be able to just declare the expected structure for our API parameters and push the validate() button. Probably there will have to be extra stuff around the edges, but this should get rid of a majority of the grunt work.

I have found that I favor this approach a lot, and you see the same in libraries such as Prototype (Ruby does a lot of this hash munging too). I wish we could just get named parameters in the language so this all just integrated very nicely indeed. What do you think?

It was something we found we needed in json-rpc to make life easier. It makes more sense if you think of api methods as properties that take an array or an object, especially when you go into doing work at language agnostic levels.

Ruby has shown us that a bit of syntactic flexibility can go a long way. For instance, Ruby has “getters” and “setters” simply because parentheses are optional in method calls.

Likewise, one can leave off the braces when passing a hash into a method (except where it would cause ambiguity), thus approximating named parameters. If we could likewise leave off the braces in JavaScript, we’d be 90% there.