Пример кода реализации REST API - PullRequest
1 голос
/ 21 марта 2011

Я ничего не знаю о реализации API.Я немного знаю PHP.У меня есть ситуация, когда мне нужно вызвать метод REST API для очистки кэша на сервере CDN.Может ли кто-нибудь помочь мне с примером кода?

Ниже приведен пример запроса:

PUT <<url>>
Authorization: TOK:12345-12345
Accept: application/json
Content-Type: application/json
Host: api.edgecast.com
Content-Length: 87
{
   "MediaPath":"<<urlhere>>"
   "MediaType":"3"
}

Может ли кто-нибудь помочь мне с кодом для реализации этого запроса API остальных?Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 13 января 2012

Мне тоже пришлось найти трудный путь. Это было проверено (с небольшими изменениями из моего исходного кода)

//## GoGrid PHP REST API Call

define('TOKEN','XXXXX-XXXXX-XXXXX-XXXXXX');     // found on the cdn admin My Settings
define('ACCOUNT_NUMBER','XXXX');        // found on the cdn admin Top Right corner

function purgeCacheFileFromCDN($urlToPurge) {
  //## Build the request
  $request_params = (object) array('MediaPath' =>  $urlToPurge, 'MediaType' => 8);   // MediaType 8=small 3=large
  $data = json_encode($request_params);

  //## setup the connection and call.
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://api.edgecast.com/v2/mcc/customers/'.ACCOUNT_NUMBER.'/edge/purge');
  curl_setopt($ch, CURLOPT_PORT , 443);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLINFO_HEADER_OUT, 1);                  // For debugging
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);             // no caching  
  curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);            // no caching  
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: tok:'.TOKEN, 'Content-Type: application/json','Accept: application/json', 'Content-length: '.strlen($data)));
  $head = curl_exec($ch);
  $httpCode = curl_getinfo($ch);
  curl_close($ch);

  //## check if error
  if ($httpCode['http_code'] != 200) {
    echo 'Error reported: '.print_r(array($head,$httpCode),1);  // output it to stdout this will be emailed to me via cron capture.
  }
}
1 голос
/ 21 марта 2011

Было лень писать с нуля, поэтому скопировал с удивительно розового сайта, который Google рекомендует на первой странице результатов.

    $data = array("a" => $a);
    $ch = curl_init($this->_serviceUrl . $id);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));

    $response = curl_exec($ch);
    if(!$response) {
        return false;
    }

PS: запрос поиска источника: http://www.google.ru/search?q=php+sample+put+request+curl

0 голосов
/ 11 ноября 2014

Здесь - это мой исходный текст моей полностью реализованной задачи Grunt для всех, кто задумывается о работе с EdgeCast API. В моем примере вы обнаружите, что я использую модуль узла для выполнения команды curl, которая удаляет CDN.

Это закончилось тем, что я потратил часы, пытаясь заставить HTTP-запрос работать в Node. Мне удалось заставить его работать в Ruby и Python, но я не отвечал требованиям этого проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...