{% load i18n %}

{% trans 'Requests' %}

{% trans 'Query parameters can be transmitted in a single JSON object via POST:' %}

jsonData = {
        'method': <method_name>,
        'kwargs': { 'key': <param1>, 'key2': <param2>,
                    'key3': [ <param3_1>, <param3_2>, <param3_3> ],
                    ... },
        'username': <login_name>,
        'password': <password>,
}
{% trans 'Authorization settings everywhere are optional.'%} {% trans 'For example, if the request object stores a user session, then authentication occurs on these data.' %}

{% trans 'Example' %} 1 {% trans 'for' %} jQuery:

{% trans 'Parameters, you can pass directly into the POST-query.' %}
$.post('/api/', {
        'method': <method_name>,
        'key': <param1>, 'key2': <param2>,
        'key3': [ <param3_1>, <param3_2>, <param3_3> ]
}, function() {});
{% trans 'In this variant, you can only pass lists and simple values.' %} {% trans 'Key "key3" in this case, jQuery will automatically change to "key3[]".' %}

{% trans 'Example' %} 2 {% trans 'for' %} jQuery:

$.post('/api/',
    { jsonData: JSON.stringify({
        'method': <method_name>,
        'kwargs': { 'key': <param1>, 'key2': <param2>,
                    'key3': [ <param3_1>, <param3_2>, <param3_3> ],
                    ... },
        })
    }, function() {});
{% trans 'In this variant, you can transfer any serializable objects.' %} {% trans 'To properly serialize dates in JSON is better to use special jQuery plugin.' %}

{% trans 'Example' %} 3 {% trans 'for' %} Python {% trans 'with HTTP Basic authorization' %}:

import urllib2, urllib, json, base64
url = 'https://{{ request.get_host|default:'localhost' }}/api/'
data = {'method':"get_orders_id", 'kwargs':{'date':'2012-01-01', 'state': 4 },}
data = urllib.urlencode({'jsonData':json.dumps(data)})
req = urllib2.Request(url, data=data,
    headers={
        'Authorization': 'Basic ' + base64.b64encode('%s:%s' % ('login', 'passwd'))
    }
)
r = urllib2.urlopen(req)
print r.read()

{% trans 'Example' %} 4 {% trans 'for' %} Python {% trans 'without HTTP Basic authorization' %}:

import urllib2, urllib, json
url = 'https://{{ request.get_host|default:'localhost' }}/api/'
data = {'username':'login','password':'passwd','method':"get_orders_id", 'kwargs':{'date': '2012-01-01', 'state':2 }, }
data = urllib.urlencode({'jsonData':json.dumps(data)})
r = urllib2.urlopen(url, data=data)
print r.read()