Tag

,

Setelah mendapatkan kebutuhan untuk membuat reporting sederhana terhadap data yang telah terkumpul menggunakan PostgreSQL, maka terdapat beberapa pilihan apabila aplikasi yang ingin dikembangkan berbasis Web. Salah satunya adalah penggunaan Javascript Framework yang mengakses ke PostgreSQL melalui REST API. Untuk pengembangan REST API selain menggunakan beberapa pilihan framework pengembangan, ternyata ada satu pilihan menarik menggunakan PostgresREST.

Salah satu impresi yang saya dapatkan dari ujicoba sederhana kali ini, penggunaan PostgresREST membuat pengembangan REST API lebih cepat karena kita tidak perlu lagi menuliskan kode yang repetitive untuk backend-nya. Alih-alih mengembangkan sendiri proses otorisasi dan autentifikasi, kita bisa langsung menggunakan schema dan role serta privilege yang ada di PostgreSQL.

Agar bisa menggunakan PostgresREST dibutuhkanPostgreSQL minimal versi 9.3, sehingga untuk percobaan ini saya harus melakukan proses upgrade untuk versi PostgreSQL yang digunakan di salah satu mesin server.

Sebagai informasi bawah saya memiliki sebuah database bernama mydb dengan user mydbuser dan password mydbpass serta schema yang digunakan adalah default yaitu public.

Pada kebutuhan saya nantinya user tidak perlu melakukan proses login, dengan beberapa table yang bisa diakses pada schema public tanpa melakukan login. Untuk itu saya buat role di PostgreSQL bernama web_public yang nantinya memiliki hak akses ke salah satu table bernama informasi_publik. Agar kebutuhan ini terpenuhi maka saya harus login sebagai super user ke PostgreSQL, di mana prosesnya bisa dijabarkan berikut ini:

# su - postgres
postgres $ psql
psql > \c mydb
You are now connected to database "mydb" as user "postgres".
psql > create role web_public nologin;
CREATE ROLE
epns=# grant web_public to mydb;
GRANT ROLE
epns=# grant usage on schema public to web_public;
GRANT
epns=# grant select on public.informasi_public to web_public;

Saya menggunakan Debian Jessie 64 dan memilih postgrest-0.4.2.0-ubuntu-x32.tar.xz dari https://github.com/begriffs/postgrest/releases/latest. Sebelum itu dilakukan terlebih dahulu instalasi libpq-dev yang merupakan library PostgreSQL. Adapun alasannya memilih ini, karena menggunakan pilihan yang lain tidak bisa berjalan 😦

# apt-get install libpq-dev
# wget https://github.com/begriffs/postgrest/releases/download/v0.4.2.0/postgrest-0.4.2.0-ubuntu-x32.tar.xz
# tar xfJ postgrest-0.4.2.0-ubuntu-x32.tar.xz
# ./postgrest --help

Langkah selanjutnya adalah konfigurasi terhadap koneksi ke database dan untuk ini saya buat sebuah file bernama testkonfigurasi.conf dengan isinya:

db-uri = "postgres://mydbuser:mydbpass@localhost/mydb"
db-schema = "public"
db-anon-role = "web_public"

Kemudian server PostgresREST dijalankan.

# ./postgres testkonfigurasi.conf
Listening on port 3000
Attempting to connect to the database...
Connection successful

Untuk testing diakses dengan curl

$ curl localhost:3000/informasi_public

Referensi:

Iklan