2017-02-09 4 views
3

Возможно ли сделать запрос GET API-интерфейсу JSON RPC? Я пытаюсь сделать это, используя random.org api (https://api.random.org/json-rpc/1/). Он работает, если я использую запрос POST, но мне нужно сделать запросы GET для всех API-интерфейсов, которые я использую в приложении, над которым я работаю.Выполнение запроса GET API-интерфейса JSON RPC вместо запроса POST

Вот запрос пост, который работает:

function getNewThing(apiUrl) { 

    data = { 
     "jsonrpc": "2.0", 
     "method": "generateIntegers", 
     "params": { 
      "apiKey": "9b6ed250-67fc-4afd-b60b-09c6076e5178", 
      "n": 1, 
      "min": 0, 
      "max": 1000000, 
      "replacement": true, 
      "base": 10 
     }, 
     "id": 683489 
    } 

    // ajax call to the api 
    return $.ajax({ 
     type: "POST", 
     url: apiUrl, 
     data: JSON.stringify(data), 
     success: function(result) { 

      console.log(result) 
     }, 
     error: function(err) { 
      console.log(err) 
     } 
    }); 
} 

Причина, я думаю, что это может быть превращена в запрос GET, потому что эта документация подразумевает это может быть: http://www.jsonrpc.org/historical/json-rpc-over-http.html#encoded-parameters

Я пробовал настроить URL следующие способы не повезло:

с кодировкой URL для Params:

https://api.random.org/json-rpc/1/invoke?jsonrpc=2.0&method=generateIntegers&params=%7B%22apiKey%22%3A%20%229b6ed250-67fc-4afd-b60b-09c6076e5178%22%2C%22n%22%3A%201%2C%22min%22%3A%200%2C%22max%22%3A%201000000%2C%22replacement%22%3A%20true%2C%22base%22%3A%2010%7D&id=683489 

Без:

'https://api.random.org/json-rpc/1/invoke?jsonrpc=2.0&method=generateIntegers&params={"apiKey": "9b6ed250-67fc-4afd-b60b-09c6076e5178","n": 1,"min": 0,"max": 1000000,"replacement": true,"base": 10}&id=683489' 

Что мне не хватает? Заранее спасибо!

+0

Ссылка на ссылку docs: вам нужно кодировать параметры base64 – charlietfl

ответ

0

Некоторые люди из группы знакомств NYJS помогли мне ответить на этот вопрос. Для всех, кто случится, найдет этот вопрос:

POST - единственный вариант, который у вас будет, потому что GET сильно обескуражен. https://www.simple-is-better.org/json-rpc/transport_http.html#get-request http://www.jsonrpc.org/historical/json-rpc-over-http.html#http-header

Для Random.org API, POST является единственным вариантом https://api.random.org/json-rpc/1/introduction

Все вызовы должны быть сделаны через HTTP POST. В частности, HTTP GET не поддерживается.

С запиской: «Это на самом деле не до вас и вашей реализации, если запрос POST может быть обработан дополнительно как запрос GET - Это то, что сервер должен был бы быть установлен для того, чтобы справиться.»

Смежные вопросы