rest/json: Difference between revisions
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/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:
- 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 RPC solution
Resources
- Original proposal by Joe Gregorio
- Standardizing RESTful JSON by Kris Zyp
- RESTful JSON Google Group -> JSON Query group
- AtomPub (for comparison/inspiration)
Proposals
- rest/urls
- rest/json-collections
- JSON Path
- JSON Query
- JSON Referencing
- JSON Resources
- HyperJSON
- HyperJSON Path Expressions
- Generalized JSON Linking
- JSON Schema
Issues
- Is the top-level entity a simple array (Persevere, Dojo) or a full-fledged object (CouchDB, ActiveRecord?)
Implementations
- CouchDB
- Jester (same URLs as ActiveResource)
- Dojo REST store
- DOM Resource
- Persevere
- SproutCore
- Grassy Knoll (Python)
- Exhibit (example)