29 Jun 2015

CodeIgniter + curl + RestClient + Frapi + selfsigned ssl

Assalamualaikum

Hari ini dan semalam aku cuba gunakan API untuk projek CodeIgniter yang aku tengah buat ni. First time guna API dalam CI ni agak kalut sikit. Namun begitu, akhirnya berjaya jugak.. Berikut adalah target aku :


1. Aplikasi CI mintak data dengan API server.
2. API Server hantar data semula.


Simple je nampak mulanya. Tapi, oleh kerana aku baru je nak try guna CI dengan API ni agak kekok sikit. Berikut adalah kronologi aku jayakan benda ni..

1. Aku setkan API server aku (FRAPI) dengan user dan api-key yang baru.

2. Setkan satu test-function dalam API server untuk kembalikan apa-apa nilai.

Untuk aplikasi ini, aku hanya perlukan sambungan client kepada API server. CodeIgniter telah sedia ada satu library yang merupakan RESTclient. Berikut adalah yang aku gunakan :

https://github.com/philsturgeon/codeigniter-restclient 

CodeIgniter-restclient ini memerlukan :

  1. PHP 5.1+
  2. CodeIgniter 2.0.0+
  3. cURL
  4. CodeIgniter Curl library: http://getsparks.org/packages/curl/show
Install Curl untuk server anda terlebih dahulu sebelum install restclient.

Tapi yang menariknya di sini sebenarnya, ada satu library untuk php ini yang bertindak seolah2 Gem dalam ruby. Library Spark ini membolehkan kita download/install apa sahaja php classes (dipanggil spark packages)  untuk projek kita.

Jom tengok spark library nis..



Sekarang aku andaikan korang takde masalah untuk install RestClient tadi di CI. Berikut adalah kod yang aku gunakan.

config_berapi.php

//api server$config['berapi_api_server'] = 'https://api.berapi.com';//api auth$config['berapi_api_name'] = 'boboboy_api';$config['berapi_api_key'] = 'iniadalahkeyapiyangsepatutnyabase64tapiinicontohsahaja:)';


dalam controller

function test_api(){
   $rest_config = array('server' => $this->config->item('berapi_api_server'),
        'http_user' => $this->config->item('berapi_api_name'),
        'http_pass' => $this->config->item('berapi_api_key'),
        'http_auth' => 'digest',
        'ssl_verify_peer' => FALSE);
    $this->rest->initialize($rest_config);


    $uri = 'berapi/test'

    $this->rest->format('application/json');    
    $result = $this->rest->get($uri, $param);


    echo $result;

}

Penerangan

1. Oleh kerana server api (api.berapi.com) adalah server api sendiri yang tidak ada sijil SSL berbayar, maka kita perlu setkan pada koding supaya TIDAK PERLU SAHKAN sijil SSL. Jika tidak, mesej ralat akan keluar, dan tidak ada nilai dihantar oleh server API.


2. HTTP_AUTH adalah secara DIGEST disetkan pada server API. di atas tu adalah caranya.

3. Fail konfigurasi config_berapi.php diautoload dalam config.php.

4. library berkaitan yang diauto load adalah : curl, rest


semoga berjaya.