API adalah singkatan dari Application Programming Interface yaitu sebuah software yang memungkinkan para developer untuk mengintegrasikan dan mengizinkan dua aplikasi yang berbeda secara bersamaan untuk saling terhubung satu sama lain..
Tujuan penggunaan dari API adalah untuk saling berbagi data antar aplikasi yang berbeda tersebut, Tujuan penggunaan API lainnya yaitu untuk mempercepat proses pengembangan aplikasi dengan cara menyediakan sebuah function yang terpisah sehingga para developer tidak perlu lagi membuat fitur yang serupa.
Istilah “API” sebetulnya tidak ada hubungannya dengan hal-hal yang berkaitan dengan web, karena istilah tersebut sudah ada sebelum web. Hal Ini semacam dikooptasi yang berarti “pemanggilan web service”. Tapi secara tradisional, Pengertian API bukan seperti itu. Tapi lebih berkaitan dengan fungsi-fungsi yang disediakan oleh Sistem Operasi.
Perbedaan antara API, REST API, dan RESTful API
Jika kalian sebelumnya sudah tahu tentang API, Mungkin dari kalian masih belum paham tentang perbedaan antara API, REST API, dan RESTful API. Berikut perbedaannya :
Sesuai penjelasan diatas jika API adalah sebuah software yang mengintegrasikan antara aplikasi yang kita buat dengan aplikasi yang lain. Tujuan pembuatannya yaitu untuk saling berbagi data antar aplikasi yang sudah diintegrasikan tersebut.
Sedangkan REST API merupakan salah satu dari desain arsitektur yang terdapat di dalam API itu sendiri. Dan cara kerja dari RESTful API yaitu REST client akan Melakukan akses pada data/resource pada REST server dimana masing-masing resource. Atau data/resource tersebut akan dibedakan oleh sebuah global ID atau URIs (Universal Resource Identifiers).
Jadi, Nantinya data yang diberikan oleh REST server itu bisa berupa format text, JSON atau XML. Dan saat ini format yang paling populer dan paling banyak digunakan adalah format JSON.
Adapun metode HTTP yang secara umum dipakai dalam REST api adalah:
- GET, berfungsi untuk membaca data/resource dari REST server
- POST, berfungsi untuk membuat sebuah data/resource baru di REST server
- PUT, berfungsi untuk memperbaharui data/resource di REST server
- DELETE, berfungsi untuk menghapus data/resource dari REST serve
- OPTIONS, berfungsi untuk mendapatkan operasi yang disupport pada resource dari REST server.
Fitur pada Web API
Banyak sekali Fitur yang bisa kamu gunakan saat memanfaatkan Web API dalam mengembangkan aplikasi kamu, Software ini akan membantu kamu dalam mempercepat development aplikasi kamu. Apa saja fitur yang tersedia :
- Mendukung fungsi CRUD yang bekerja melalui HTTP protocol dengan melalui method GET, POST, PUT dan DELETE
- Memiliki response Accept Header dan HTTP status code
- Mendukung banyak format teks, Seperti JSON, XML atau format apapun yang kamu inginkan, Akan tetapi kebanyakan digunakan ke dalam format JSON. Kamu juga bisa menggunakan MediaTypeFormatter untuk melakukan kustom.
- Mendukung fitur MVC seperti routing, controllers, action results, filter, model, IOC container, dll.
- Web API dapat berjalan di Apache atau web server lainnya yang didukung sesuai bahasa pemrograman yang digunakan.
Adapun manfaat dari Rest API Server :
- Skalabilitas : mengoptimalkan interaksi klien-server
- Fleksibilitas dimana layanan Restfull mendukung pemisahan total klien-server sehingga masing-masing berbagai komponen server dan berbagai platform tidak mempengaruhi aplikasi klient.
- Independensi : independen terhadap teknologi yang digunakan sehingga aplikasi klien dan server dengan berbagai bahasa pemprogaman tidak mempengaruhi desain API.
Kenapa Kamu Harus Menggunakan Web API
Kenapa kamu harus memilih menggunakan Web API? Jika dilihat dari penjelasan diatas pasti kamu sudah paham tentang apa saja kelebihan dan manfaat yang bisa kamu dapatkan saat menggunakan Web API dalam pengembangan aplikasi. Berikut alasan mengapa memilih Web API :
- Web API bersifat Open Source
- Saat kamu membutuhkan Web Service dan tidak perlu SOAP, maka ASP.NET Web API adalah solusi dan pilihan terbaik.
- Web API dapat digunakan untuk membangun Layanan HTTP sederhana, non-SOAP di atas WCF message pipeline.
- Konfigurasi yang mudah dan tidak seperti pada layanan WCF REST.
- Pembuatan Service dengan API Web cukup sederhana, Berbeda dengan Layanan WCF REST, pembuatan service menjadi cukup sulit.
- Berdasarkan HTTP sehingga mudah untuk didefinisikan, mengekspos dan mengkonsumsi dengan cara RESTful.
- Berdasarkan arsitektur RESTful yang ringan dan bagus untuk perangkat yang memiliki bandwidth terbatas seperti ponsel pintar.
Langkah-langkah membuat Restful API dengan Codeigniter 3.
1. Download Codeigniter 3 diwebsite resmi, ekstrak dalam folder httdocs XAMPP buat nama sesuai dengan keinginan:
2. Download library Codeigniter RestServer dan ekstrak didalam Codeigniter 3
Berikut struktur library Codeigniter Restserver yang dibuat oleh Chris Kacerguis :
3. Copy rest_controller_lang.php (lokasi difolder-> Language/english/) paste kedalam folder codeigniter (lokasi folder -> application/langguage/english).
4. Copy rest.php (lokasi di -> src) paste kedalam folder codeigniter (application/config)
5. Copy Format.php dan RestController.php paste kedalam folder codeigniter (lokasi difolder -> application/libraries/)
6. Seting Config Autoload aktifkan Database config autoload.php
7. Seting Database masukan user, password dan nama database. pada config database.php disesuaikan dengan nama database teman-teman di XAMPP
8. perbaiki coding yang eror pada RestController.php tambah tanda lebih besar dari (>) setelah _end_rtime :
9. Buat Database baru restapi_ci3, dan buat tabel sebagai contoh saya menggunakan data Penduduk, untuk struktur tabel dan database bisa di download pada akhir tutorial sekaligus dengan source code.
10. Seting rest-api pada file : rest.php (application/config)
Masuk ke file rest.php (difolder -> application/config), masukan id untuk login akses ke rest api serverter terdiri dari id/username dan password seperti contoh berikut :
Aktifkan limit true masih di file seting rest.php, dan Buat tabel Limit, untuk membatasi jumlah akses ke rest server CI3
Aktifkan limit d file seting rest.php akses ke rest api server dengan mengubah menjad true
Buat tabel limit didatabase temen-temen dengan mengenerate kode berikut, seperti contoh yang ada pada rest.php
CREATE TABLE `limits` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`uri` VARCHAR(255) NOT NULL,
`count` INT(10) NOT NULL,
`hour_started` INT(11) NOT NULL,
`api_key` VARCHAR(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Buat tabel keys untuk, untuk membatasi hanya yang memiliki keys yang bisa mengakses rest api server. masukan data key sementara.
Masukan dama key untuk akses ke API sesuai kebutuhan anda :
Aktifkan keys
Generate tabel key untuk membuat tabel keys didatabase saudara, seperti contoh yang ada pada rest.php :
CREATE TABLE `keys` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`key` VARCHAR(40) NOT NULL,
`level` INT(2) NOT NULL,
`ignore_limits` TINYINT(1) NOT NULL DEFAULT '0',
`is_private_key` TINYINT(1) NOT NULL DEFAULT '0',
`ip_addresses` TEXT NULL DEFAULT NULL,
`date_created` INT(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Buat Controller dan Model Mahasiswa. untuk mengakses data, kemudian masukan data namespace librari Rest API yang kita download tadi. Tampilan Controller Mahasiswa.php seperti dibawah ini:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
require APPPATH . "libraries/format.php";
require APPPATH . "libraries/RestController.php";
use chriskacerguis\RestServer\RestController;
class Mahasiswa extends RestController
{
public function __construct()
{
parent::__construct();
$this->load->model('ModelMahasiswa', 'mahasiswa');
// Membatasi Jumlah akses sesuai kebutuhan
$this->methods['index_get']['limit'] = 200;
}
// Menampilkan data
public function index_get()
{
$id = $this->get('id');
if ($id === null) {
$mahasiswa = $this->mahasiswa->getMahasiswa();
} else {
$mahasiswa = $this->mahasiswa->getMahasiswa($id);
}
if ($mahasiswa) {
$this->response([
'status' => true,
'data' => $mahasiswa
], RestController::HTTP_OK);
} else {
$this->response([
'status' => false,
'message' => 'id not found'
], RestController::HTTP_NOT_FOUND);
}
}
// Menghapus data
public function index_delete()
{
$id = $this->delete('id');
if ($id == null) {
$this->response([
'status' => false,
'message' => 'profide an id!'
], RestController::HTTP_BAD_REQUEST);
} else {
if ($this->mahasiswa->deleteMahasiswa($id) > 0) {
// ok
$this->response([
'status' => true,
'data' => $id,
'message' => 'deleted.'
], RestController::HTTP_OK);
} else {
// id not found
$this->response([
'status' => false,
'message' => 'id not found!'
], RestController::HTTP_BAD_REQUEST);
}
}
}
// Menambah data
public function index_post()
{
$data = [
'nim' => $this->post('nim'),
'nama' => $this->post('nama'),
'email' => $this->post('email'),
'jurusan' => $this->post('jurusan'),
];
if ($this->mahasiswa->createMahasiswa($data) > 0) {
$this->response([
'status' => true,
'message' => 'new mahasiswa has been created.'
], RestController::HTTP_CREATED);
} else {
$this->response([
'status' => false,
'message' => 'failed to create new data!.'
], RestController::HTTP_BAD_REQUEST);
}
}
// Update data
public function index_put()
{
$id = $this->put('id');
$data = [
'nim' => $this->put('nim'),
'nama' => $this->put('nama'),
'email' => $this->put('email'),
'jurusan' => $this->put('jurusan'),
];
if ($this->mahasiswa->updateMahasiswa($data, $id) > 0) {
$this->response([
'status' => true,
'message' => 'data mahasiswa has been updated'
], RestController::HTTP_OK);
} else {
$this->response([
'status' => false,
'message' => 'failed to update data!.'
], RestController::HTTP_BAD_REQUEST);
}
}
}
Buat Model Mahasiswa dengan nama file ModelMahasiswa.php difolder Application-Model:
<?php
class ModelMahasiswa extends CI_Model
{
public function getMahasiswa($id = null)
{
if ($id === null) {
return $this->db->get('mahasiswa')->result_array();
} else {
return $this->db->get_where('mahasiswa', ['id' => $id])->result_array();
}
}
public function deleteMahasiswa($id)
{
$this->db->delete('mahasiswa', ['id' => $id]);
return $this->db->affected_rows();
}
public function createMahasiswa($data)
{
$this->db->insert('mahasiswa', $data);
return $this->db->affected_rows();
}
public function updateMahasiswa($data, $id)
{
$this->db->update('mahasiswa', $data, ['id' => $id]);
return $this->db->affected_rows();
}
}
Selanjutnya saatnya kita ujicoba Restful API Server yang telah kita buat akses dengan menggunakan aplikasi Postman , gunakan method GET dengan alamat Rest Server Codeigniter 3 disesuaikan dengan lokasi XAMPP pada komputer masing-masing :
http://localhost/rest-api/mahasiswa?its-key=itsnu
Menambah data user dan password seting terlebih dahulu tab Authorization :
Menampilkan seluruh data Mahasiswa pilih method GET dan masukan key dan value sesuai yang telah kita seting sebelumnya dengan key its-key dan value itsnu:
Menampilkan data berdasar id Mahasiswa dengan metode GET masukan key dan value sesuai dengan id yang kita ingin tampilkan disini saya coba dengan key 1 sehingga menambilkan data mahasiswa dengan id 1 :
Ok, Selesai. silahkan saudara mencoba dengan methot PUT edit data dan DELETE untuk menghapus data pada Rest Server yang telah kita buat sesuaikan dengan ID dan data yang akan diedit ataupun dihapus, karena controller dan model telah kita buat silahkan mencoba dengan aplikasi Postman.
Akhirnya selesai juga kita membuat Restserver dengan menggunakan Codeigniter 3, adapun spesifikasi yang saya gunakan untuk membuat Restserver :
Spesifikasi :
- PHP 7.0 – 7.4
- Codeigniter 3.1.13
- Codeigniter Server (Chris Kacerguis)
- Postman (untuk mengakses Restserver)
NB: Bagi yang gagal bisa diskusi dengan saya. trims