Revision 981e0168 doc/rapi.rst

b/doc/rapi.rst
72 72
.. _RFC2617: http://tools.ietf.org/rfc/rfc2617.txt
73 73

  
74 74

  
75
A note on JSON as used by RAPI
76
++++++++++++++++++++++++++++++
77

  
78
JSON_ as used by Ganeti RAPI does not conform to the specification in
79
:rfc:`4627`. Section 2 defines a JSON text to be either an object
80
(``{"key": "value", …}``) or an array (``[1, 2, 3, …]``). In violation
81
of this RAPI uses plain strings (``"master-candidate"``, ``"1234"``) for
82
some requests or responses. Changing this now would likely break
83
existing clients and cause a lot of trouble.
84

  
85
.. highlight:: ruby
86

  
87
Unlike Python's `JSON encoder and decoder
88
<http://docs.python.org/library/json.html>`_, other programming
89
languages or libraries may only provide a strict implementation, not
90
allowing plain values. For those, responses can usually be wrapped in an
91
array whose first element is then used, e.g. the response ``"1234"``
92
becomes ``["1234"]``. This works equally well for more complex values.
93
Example in Ruby::
94

  
95
  require "json"
96

  
97
  # Insert code to get response here
98
  response = "\"1234\""
99

  
100
  decoded = JSON.parse("[#{response}]").first
101

  
102
Short of modifying the encoder to allow encoding to a less strict
103
format, requests will have to be formatted by hand. Newer RAPI requests
104
already use a dictionary as their input data and shouldn't cause any
105
problems.
106

  
107

  
75 108
PUT or POST?
76 109
------------
77 110

  

Also available in: Unified diff