Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
None
-
None
-
None
-
None
Description
As mentioned in HBASE-2563, we should deprecate all uses of cell in the API and replace with new APIs that use value instead. So we need a way to version the REST interface, to provide an updated API while maintaining access to the deprecated one until the next major revision. However, something like this I consider wrong:
/path/to/v1/resource
and also:
/v2/path/to/resource
because the resource is the same regardless of the representation change. REST makes a distinction between the representation and the resource using media types.
Currently Stargate supports the following encodings:
- text/plain (in some cases)
- binary: application/octet-stream (freeform, no schema change needed)
- XML: text/xml
- JSON: application/json
- protobufs: application/x-protobuf
We can add Avro encoding support in HBASE-2557 with the new representation as application/x-avro-binary immediately. For XML, JSON, and protobuf encoding, we can support new representations using the following new media types in the current version:
- XML: application/vnd.hbase+xml
- JSON: application/vnd.hbase+json
- protobufs: application/vnd.hbase+protobuf
- and for sake of consistency: application/vnd.hbase+avro
and then in the next major version recognize both MIME types but return the same (newer) representation.