Storing as erlang-binary/term, reading as json.

Jonathan Langevin jlangevin at loomlearning.com
Thu Aug 11 16:32:25 EDT 2011


I believe the Accept parameter is intended only for the ability to list
riak-native data. So to get riak parameters back as json, that's when you
specify the Accept header.
Regarding objects that you store it Riak, my experience has been that it
returns the data back as you stored it. So based on the type that you
specify when posting/putting the data, is the content type that you get
back.

If I'm wrong, hopefully someone will correct me shortly :-)

<http://www.loomlearning.com/>
*Jonathan Langevin
Systems Administrator
Loom Inc.
Wilmington, NC: (910) 241-0433 - jlangevin at loomlearning.com -
www.loomlearning.com - Skype: intel352*



On Thu, Aug 11, 2011 at 12:03 PM, Fyodor Yarochkin <fyodor.y at armorize.com>wrote:

> Greetings,
>  I am probably missing something obvious, but I've been playing with
> it for a couple of days, still can't figure out the consistency and I
> am still a little lost with riak source code so I thought I'd drop a
> line here:
>
> I am experimenting with querying riak data data in different mime
> formats from riak cluster. So for the tests, I am having a piece of
> erlang code, which uses riak-erlang-client, writes some data into riak
> as erlang-binary.
>
>    Object = riakc_obj:new(<<"test">>,
> test_util:get_datekey(),{struct, [{field, Value}]}),
>    riakc_pb_socket:put(RiakPid, Object),
>
> Now I am trying to make the data to be accessible to non-erlang
> clients so the node.js code (for example) would be able to read it as
> json.
>
> My understanding is that I should be able to specify that I want
> json-formatted data back by adding 'Accept: application/json' header
> (per example here http://wiki.basho.com/HTTP-List-Resources.html)
>
> However I am getting HTTP 406 whenever I am trying to query anything
> but erlang-binary:
>
> srv# curl -i 'http://localhost:8098/riak/test/2011811234248'
> HTTP/1.1 200 OK
> X-Riak-Vclock: a85hYGBgymDKBVIsLC6FEzKYEhnzWBkyincc54MIszUnMfB8v4wskQUA
> Vary: Accept-Encoding
> Server: MochiWeb/1.1 WebMachine/1.7.3 (participate in the frantic)
> Link: </riak/test>; rel="up"
> Last-Modified: Thu, 11 Aug 2011 15:38:16 GMT
> ETag: "6iDf0EKIk76L1KxlXoSB29"
> Date: Thu, 11 Aug 2011 15:33:41 GMT
> Content-Type: application/x-erlang-binary
> Content-Length: 565
>
>
> However, for application/json
>
> srv# curl -H 'Accept: application/json' -i
> 'http://localhost:8098/riak/test/2011811234248'
> HTTP/1.1 406 Not Acceptable
> Server: MochiWeb/1.1 WebMachine/1.7.3 (participate in the frantic)
> Date: Thu, 11 Aug 2011 15:34:12 GMT
> Content-Length: 0
>
>
> So, should I store the data as 'json' (json string converted to erlang
> binary) in order to have some uniform data format accessible to erlang
> and non-erlang clients?
> also, how do map-reduce functions work in this case, do they have to
> be strictly erlang in the case of having x-erlang-binary, or the data
> could be converted to json for javascript?
>
> thanks,
> -Fyodor
>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20110811/40b2c52c/attachment.html>


More information about the riak-users mailing list