Пераметры запросов могут передаваться в едином JSON-объекте посредством POST:
data = {
'method': <method_name>,
'kwargs': { 'key': <param1>, 'key2': <param2>,
'key3': [ <param3_1>, <param3_2>, <param3_3> ],
... },
'username': <login_name>,
'password': <password>,
}
Либо они передаются непосредственно в POST запросе, причём параметры
авторизации везде необязательны. Пример для jQuery:
$.post('/api/', {
'method': <method_name>,
'key': <param1>, 'key2': <param2>,
'key3': [ <param3_1>, <param3_2>, <param3_3> ]
}, function() {});
Ключ "key3" в этом случае jQuery автоматически изменит на "key3[]".
Пример в Python с HTTP Basic авторизацией:
import urllib2, json, base64
url = 'https://{{ request.get_host }}/api/'
data = {'method':"get_orders_id", 'kwargs':{'date':'2012-01-01', 'state': 4 },}
req = urllib2.Request(url, data=json.dumps(data),
headers={
'Authorization': 'Basic ' + base64.b64encode('%s:%s' % ('login', 'passwd'))
}
)
r = urllib2.urlopen(req)
print r.read()
Пример в Python без использования HTTP авторизации:
import urllib2, json
url = 'https://{{ request.get_host }}/api/'
data = {'username':'login','password':'passwd','method':"get_orders_id", 'kwargs':{'date': '2012-01-01', 'state':2 }, }
r = urllib2.urlopen(url, data=json.dumps(data))
print r.read()
JSON_object = {
'status': 200, // коды HTTP, имеющие смысл.
'message': 'Строчное сообщение для пользователя',
'data': <Вложенный объект JSON>,
}
Тип и структура вложенного объекта зависят от вызываемого метода (см. документацию ниже).