Difference between revisions of "rest/json"

From Microformats Wiki
Jump to navigation Jump to search
(initial page)
(→‎Resources: JSON query google group)
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
= RESTful JSON =
 
= RESTful JSON =
 +
 +
== Charter ==
 +
 +
Given that:
 +
* [http://en.wikipedia.org/wiki/Representational_State_Transfer REST] is a powerful architecture for scalable web services
 +
* [http://www.json.org/ JSON] is a lightweight container for exchanging data
 +
* [http://tools.ietf.org/html/rfc5023  AtomPub], while RESTful, requires XML documents with strict metadata requirements
 +
 +
The goal of the RESTful JSON project is to develop a series of conventions for:
 +
* URLs
 +
* HTTP methods
 +
* HTTP headers
 +
* JSON fields
 +
that:
 +
# is maximally compatible with existing (RESTful, generic) clients
 +
# enables partial updates
 +
# allows paging and/or partial returns of large datasets
 +
# standardizes linking to related resources
 +
# defines a generic query syntax
 +
# uses hypermedia (links + context) to manage application state
 +
# does NOT become a full-fledged [http://hideoustriumph.wordpress.com/2008/05/05/ws-deathstar-for-the-rest-of-us/ RPC] solution
  
 
== Resources ==
 
== Resources ==
* [http://bitworking.org/news/restful_json Original proposal]
+
* [http://bitworking.org/news/restful_json Original proposal] by Joe Gregorio
* [http://groups.google.com/group/restful-json Google Group]
+
* [http://www.json.com/2008/08/19/standardizing-restful-json/ Standardizing RESTful JSON] by Kris Zyp
 +
* [http://groups.google.com/group/restful-json RESTful JSON Google Group] -> [http://groups.google.com/group/json-query JSON Query] group
 
* [http://tools.ietf.org/html/rfc5023 AtomPub] (for comparison/inspiration)
 
* [http://tools.ietf.org/html/rfc5023 AtomPub] (for comparison/inspiration)
  
 
== Proposals ==
 
== Proposals ==
* [[rest/urls]]
+
* [[rest/urls]]
* [[rest/json-collections]]
+
* [[rest/json-collections]]
 +
* [http://goessner.net/articles/JsonPath/ JSON Path]
 +
* [http://www.sitepen.com/blog/2008/07/16/jsonquery-data-querying-beyond-jsonpath/ JSON Query]
 +
* [http://www.sitepen.com/blog/2008/06/17/json-referencing-in-dojo/ JSON Referencing]
 +
* [http://www.json.com/specifications/json-resources/ JSON Resources]
 +
* [http://groups.google.com/group/restful-json/browse_thread/thread/8c33618df87d85f8 HyperJSON]
 +
* [http://groups.google.com/group/restful-json/browse_thread/thread/b3e8aa78052f67f1# HyperJSON Path Expressions]
 +
* [http://www.subbu.org/blog/2008/10/generalized-linking Generalized JSON Linking]
 +
* [http://json-schema.org/ JSON Schema]
 +
 
 +
== Issues ==
 +
* Is the top-level entity a simple array (Persevere, Dojo) or a full-fledged object (CouchDB, ActiveRecord?)
  
 
== Implementations ==
 
== Implementations ==
* [http://giantrobots.thoughtbot.com/2007/4/2/jester-javascriptian-rest Jester]
+
* [http://incubator.apache.org/couchdb/docs/intro.html CouchDB]
 +
* [http://giantrobots.thoughtbot.com/2007/4/2/jester-javascriptian-rest Jester] (same URLs as ActiveResource)
 
* [http://www.sitepen.com/blog/2008/06/13/restful-json-dojo-data/ Dojo REST store]
 
* [http://www.sitepen.com/blog/2008/06/13/restful-json-dojo-data/ Dojo REST store]
 
* [http://code.google.com/p/dom-resource/ DOM Resource]
 
* [http://code.google.com/p/dom-resource/ DOM Resource]
 +
* [http://sitepen.com/labs/persevere.php Persevere]
 
* [http://github.com/sproutit/sproutcore/wikis/sproutcore-rest-api-the-definitive-guide SproutCore]
 
* [http://github.com/sproutit/sproutcore/wikis/sproutcore-rest-api-the-definitive-guide SproutCore]
 +
* [http://code.google.com/p/grassyknoll/ Grassy Knoll] (Python)
 +
* [http://simile.mit.edu/wiki/Exhibit/Getting_Started_Tutorial Exhibit] ([http://simile.mit.edu/exhibit/examples/nobelists/nobelists.js example])

Latest revision as of 18:44, 6 February 2009

RESTful JSON

Charter

Given that:

  • REST is a powerful architecture for scalable web services
  • JSON is a lightweight container for exchanging data
  • AtomPub, while RESTful, requires XML documents with strict metadata requirements

The goal of the RESTful JSON project is to develop a series of conventions for:

  • URLs
  • HTTP methods
  • HTTP headers
  • JSON fields

that:

  1. is maximally compatible with existing (RESTful, generic) clients
  2. enables partial updates
  3. allows paging and/or partial returns of large datasets
  4. standardizes linking to related resources
  5. defines a generic query syntax
  6. uses hypermedia (links + context) to manage application state
  7. does NOT become a full-fledged RPC solution

Resources

Proposals

Issues

  • Is the top-level entity a simple array (Persevere, Dojo) or a full-fledged object (CouchDB, ActiveRecord?)

Implementations