2013-06-16 2 views
3

Я успешно делаю вызовы API с использованием cURL в PHP, который возвращает массив JSON на моем локальном компьютере. По какой-то причине, когда я нажимаю этот код на свой хост (bluehost), я ничего не возвращаю. Я не получаю никаких ошибок, просто null.Использование jQuery вместо cURL для вызовов REST API в PHP

Было высказано предположение, что использование cURL является старой школой и не рекомендуется в любом случае, и что я должен просто сделать это в jQuery. Я поставил текущий код ниже, может ли кто-нибудь указать мне в правильном направлении, как выполнить одно и то же в jQuery или другом методе в PHP?

function CallAPI($method, $url, $data = false) 
{ 
    $curl = curl_init(); 

    switch ($method) 
    { 
     case "POST": 
      curl_setopt($curl, CURLOPT_POST, 1); 

      if ($data) 
       curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 
      break; 
     case "PUT": 
      curl_setopt($curl, CURLOPT_PUT, 1); 
      break; 
     default: 
      if ($data) 
       $url = sprintf("%s?%s", $url, http_build_query($data)); 
    } 

    // Optional Authentication: 
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($curl, CURLOPT_USERPWD, "username:password"); 

    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    return curl_exec($curl); 
} 

Я называю эту функцию в PHP, как это для ГЭТ:

$api_querystring = "https://discreet.afty.io/api/swags?type=0&status={$swag_status}"; 
$response = CallAPI('GET', $api_querystring); 
$badges = json_decode($response); 

И я получаю обратно JSON объект массива, как:

Array ([0] => stdClass Object ([__v] => 21 [_id] => 51ae35bd005f377a06000018 [apns_token] => 8ef99cb6c8fa2928468cfbaa5b1d6d0244e46ad0ca6dd56e476e26edffbb8c59 [badge] => 51b64157a1facb5b2b000018 [device_id] => EB3D1DFF-5557-4EEA-8BE3-E261FBB5C058 [first_name] => Jeff [last_name] => S [metadata] => stdClass Object ([limit] => Erotic Chat) [groups] => Array ([0] => 51ae99e3005f377a06000036 [1] => 51a84dc3a8a3801477000007 [2] => 51ae70085068176b06000023 [3] => 51af69ad5068176b0600002f [4] => 51b2a0af50c8b0507d00000c [5] => 51a84df6a8a3801477000008 [6] => 51ae5c625068176b06000021 [7] => 51a84e91a8a380147700000a [8] => 51b69543a1facb5b2b000020 [9] => 51b695cddaa06e871900001b [10] => 51b695f1daa06e871900001c [11] => 51a84e81a8a3801477000009) [connected] => [admin] => [flagged] => [blocked] => [apns_count] => 0 [apns_status] => 0 [_create_date] => 2013-06-04T18:45:17.460Z [_last_modified] => 2013-06-16T06:17:07.516Z)) 

и POST, как это:

$api_querystring = "https://discreet.afty.io/api/admin/users/{$id}"; 
$response = CallAPI('POST', $api_querystring, $data); 

Я знаю, что это, вероятно, довольно простой материал; но это первый раз, когда я работал с API (это классно), но я мог бы использовать некоторые дополнительные рекомендации.

+2

jQuery - это библиотека javascript. Если вы хотите использовать jQuery для вызовов API, вы будете делать запросы на стороне клиента (в браузере) с помощью javascript. Это, скорее всего, изменит способ структурирования вашего веб-приложения – compid

+0

. Вы можете попробовать следующее: http://stackoverflow.com/a/9802864/1407034 Это альтернативный способ сделать запрос GET в PHP. – compid

+0

Является ли это просто мной или кто-нибудь еще чувствует, что 'cURL' ** не ** старая школа? – gkalpak

ответ

0

Прежде всего, jQuery - это библиотека javascript. Javascript выполняется в браузере клиента, а не на сервере. Это означает, что использование javascript может выявить больше логики приложения, но в то же время улучшить работу пользователя/отзывчивость, поскольку вы можете использовать javascript для прямого доступа к DOM и изменения веб-страницы без дополнительных запросов сервера.

Чтобы сделать запрос в javascript, мы делаем это через AJAX, что является способом асинхронного запроса на сервер. Чтобы в полной мере воспользоваться этим, вам нужно будет изучить javascript, jQuery, а также как выполнять запросы AJAX в jQuery и как манипулировать DOM (веб-страницей) с помощью jQuery.

В самом сводились и изолированный вид, здесь яваскрипт кода (с использованием библиотеки JQuery), что бы сделать запрос:

$.ajax({ 
    url: "https://discreet.afty.io/api/swags", 
    type: "get", 
    data: { 
    type: 0, 
    status: somevar 
    }, 
    success: function(data) { 
    // do something with returned JSON 
    } 
}); 

Я буду держать это как сообщества вики, чтобы другие пользователи может добавить ресурс для начала работы с Javascript/jQuery/AJAX.

+0

Thanks; В прошлом я делал некоторые запросы AJAX в CRUD w/MySQL, форматирование выглядит довольно похоже. Я постараюсь поиграть с этим. Благодарю. –

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