Services Laravel Untuk Memanggil Data Feeder PDDIKTI

7
2310
Laravel PDDIKTI

Halo Sobat Karedok.Net, jadi ceritanya sekarang saya sedang menangani klien salah satu Universitas Negeri. Nah, kali ini saya dan temen-temen diminta membuat sebuah Academic Integrated System. Yaitu menghubungkan berbagai aplikasi yang berkaitan dengan proses akademik menjadi satu aplikasi. Salah satu yang harus kami lakukan yaitu bagaimana meng-integrasikan sistem yg kami bangun ke aplikasi milik Pangkalan Data Pendidikan Tinggi (PDDIKTI). Aplikasi yang dimaksud tentu saja Feeder PDDIKTI.

Aplikasi feeder PDDIKTI ini merupakan aplikasi yang disediakan oleh Dirjen Dikti untuk Perguruan Tinggi Swasta maupun negeri dalam hal pengelolaan data perguruan tinggi yang kemudian dilaporkan ke Pangkalan Data Pendidikan Tinggi (PDDIKTI).

Nah, kali ini saya mau share bagaimana cara integrasi aplikasi Laravel dengan Feeder Pangkalan Data Pendidikan Tinggi (PDDIKTI).

Persiapan

Pada artikel ini, kita akan menggunakan beberapa aplikasi berikut:

  1. Laravel 6
  2. Aplikasi Feeder PDDIKTI

Install guzzlehttp/guzzle

Paket Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services.

Kita akan menggunakan Guzzle sebagai perantara antara aplikasi yg kita gunakan dengan aplikasi PD DIKTI. Jika belum ada, silakan install paket ini.

 composer require guzzlehttp/guzzle 

dalam tulisan ini saya menggunakan versi “^6.3”

Buat Services

Siapkan file services yang nantinya bisa digunakan di controller yang memerlukan pemanggilan data ke aplikasi PD DIKTI.

cd app
mkdir Services
cd Services
nano FeederDiktiApiService.php

Copy paste code di bawah ini :

<?php

namespace App\Services;

use GuzzleHttp\Client;

class FeederDiktiApiService {
    // url Feeder Dikti
    private $url;
    // Username Feeder Dikti
    private $username;
    // Password
    private $password;
    //data
    private $act;

    function __construct($act) {
        $this->url = env('feeder_url');
        $this->username = env('feeder_username');
        $this->password = env('feeder_password');
        $this->act = $act;
    }

    public function runWS()
    {
        $client = new Client();
        $params = [
            "act" => "GetToken",
            "username" => $this->username,
            "password" => $this->password
        ];

        $req = $client->post( $this->url, [
            'headers' => [
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'body' => json_encode($params)
        ]);

        $response = $req->getBody();
        $result = json_decode($response,true);

        if($result['error_code'] == 0) {
            $token = $result['data']['token'];

            $params = [
                "token" => $token,
                "act" => $this->act,
            ];

            $req = $client->post( $this->url, [
                'headers' => [
                    'Content-Type' => 'application/json',
                    'Accept' => 'application/json',
                ],
                'body' => json_encode($params)
            ]);

            $response = $req->getBody();
            $result = json_decode($response,true);
        }

        return $result;
    }
}

Simpan Informasi Feeder PDDIKTI

Buka file .env dan tambahkan informasi berikut:

feeder_url=http://localhost:8082/ws/live2.php
feeder_username=UsernameFeeder
feeder_password=PasswordFeeder

Silakan sesuaikan isian yang dicetak tebal dengan informasi dimana aplikasi feeder PDDIKTI terpasang.

Memanggil Service

Sekarang kita akan buat cara pemanggilan datanya. Untuk keperluan artikel ini kita hanya akan gunakan di route, yang nantinya tentu bisa diadaptasikan jika ingin digunakan di controller.

Buka file web.php di folder routes

nano routes/web.php

buat line baru dengan isi seperti berikut:

Route::get('feeder-dikti/{act}', function ($act) {
    $data = new \App\Services\FeederDiktiApiService($act);
    $data->runWS();
    $response = $data->runWS();

    dd( $response );
});

Jalankan di browser

selajutnya coba jalankan melalui browser misalnya dengan url http://localhost/feeder-dikti/GetProfilPT untuk mendapatkan profil perguruan tinggi. Jika berhasil akan muncul sbb:

Run Services

Informasi yg terima sudah dalam bentuk array dan isi informasinya ada dalam key data. Karena itu kita bisa panggil dengan $response[‘data’]; kemudian baru di proses di controller atau script lain yang memanggil.

Tentu saja ini hanya contoh sederhana bagaimana menghubungkan aplikasi laravel kita dengan feeder PDDIKTI. Ada banyak cara dan metode lain yang bisa dicoba dan diperkaya. Misalnya informasi login disimpan & dipanggil melalui database dengan password yg sudah di encrypt, atau hasil pemanggilannya disimpan ke dalam database, dan lainnya.

Semoga membantu, selamat mencoba…

Bahan bacaan:
1. https://github.com/guzzle/guzzle
2. https://laravel.com/docs/6.x/responses
3. https://laravel.com/docs/7.x/http-client

7 KOMENTAR

  1. Kenapa Setelah saya panggil ke Datatables muncul “Error URI must be a string or UriInterface” mohon bantuannya. Terima Kasih

  2. Btw, errornya muncul saat melakukan panggilan ke feeder atau setelah nya?
    Dalam artian proses ambil data dari feeder sudah selesai dan error muncul saat data ditampilkan di datatables?

Mari diskusi

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.