Flask RESTful API
API singkatan dari Application Programming Interface. API adalah kumpulan aturan dan protokol yang memungkinkan berbagai aplikasi berkomunikasi dan berinteraksi satu sama lain. Dalam konteks pengembangan perangkat lunak, API berfungsi sebagai jembatan antara dua atau lebih aplikasi yang memungkinkan mereka saling berkomunikasi dan bertukar data.
Bayangkan API seperti sebuah restoran yang memiliki daftar menu. Ketika Anda pergi ke restoran, Anda tidak perlu masuk ke dapur dan memasak makanan sendiri. Sebaliknya, Anda memberikan pesanan Anda kepada pelayan, dan pelayan akan memberikan pesanan Anda kepada koki. Koki akan memasak makanan sesuai dengan pesanan Anda dan memberikannya kembali kepada pelayan. Akhirnya, pelayan akan memberikan makanan yang sudah jadi kepada Anda.
Dalam analogi ini, API adalah pelayan restoran yang berfungsi sebagai perantara antara Anda (aplikasi Anda) dan koki (sumber daya eksternal). API memberikan daftar menu (metode dan endpoint) yang dapat Anda gunakan untuk mengakses dan berinteraksi dengan sumber daya eksternal.
Misalnya, Anda memiliki aplikasi cuaca yang ingin menampilkan kondisi cuaca saat ini. Namun, Anda tidak ingin membangun seluruh sistem cuaca dari awal. Alih-alih, Anda menggunakan API cuaca yang disediakan oleh penyedia layanan cuaca. API cuaca ini menyediakan endpoint seperti /weather/current yang memungkinkan Anda mengambil data cuaca saat ini.
Dalam hal ini, Anda sebagai pengembang aplikasi menggunakan API cuaca untuk mengirim permintaan ke endpoint /weather/current melalui HTTP GET. API cuaca mengambil permintaan Anda dan menghubungkan ke sistem cuaca mereka. Sistem cuaca mengambil data cuaca saat ini dan mengirimkannya kembali melalui API cuaca. Akhirnya, API cuaca meneruskan respons tersebut kepada aplikasi Anda.
API memungkinkan Anda mengakses fungsionalitas atau layanan yang telah ada tanpa perlu membangun semuanya dari awal. Sebagai pengembang, Anda dapat menggunakan API untuk mengintegrasikan layanan dari pihak ketiga, seperti cuaca, pembayaran, peta, atau media sosial, ke dalam aplikasi Anda dengan mudah.
Dengan API, Anda dapat berinteraksi dengan sumber daya eksternal, mengambil data, mengirim permintaan, atau bahkan mengirimkan data untuk diproses oleh sistem lain. API membuat komunikasi antara aplikasi menjadi lebih mudah dan efisien, mirip dengan cara Anda memesan makanan melalui pelayan di restoran.
Flask API
Flask-RESTful API adalah ekstensi dari framework Flask yang dirancang khusus untuk memudahkan pembangunan API RESTful menggunakan Flask. Flask-RESTful menyediakan sejumlah alat dan fitur yang memungkinkan pengembang untuk dengan cepat dan mudah membangun API yang efisien dan konsisten.
Dalam Flask-RESTful, Anda dapat menggunakan pendekatan objek-ke-sumber daya untuk mendefinisikan API Anda. Anda membuat kelas yang mewarisi kelas Resource dari Flask-RESTful untuk setiap sumber daya yang ingin Anda sediakan. Setiap metode dalam kelas tersebut mengatur cara menangani permintaan HTTP yang terkait dengan sumber daya tersebut.
Misalnya, jika Anda ingin membuat sumber daya "users", Anda dapat membuat kelas UsersResource yang mewarisi Resource dan menentukan metode GET, POST, PUT, dan DELETE untuk mengatur perilaku API terkait pengguna. Contohnya seperti ini:
from flask import Flask |
Dalam contoh di atas, kita menginisialisasi aplikasi Flask dan objek Api dari Flask-RESTful. Kemudian, kita membuat kelas UsersResource yang mewarisi Resource dan mendefinisikan metode GET, POST, PUT, dan DELETE untuk mengatur perilaku API terkait pengguna.
Setelah itu, kita menambahkan UsersResource ke API dengan menggunakan metode add_resource . Ini menghubungkan URL /users dengan UsersResource , sehingga API akan menangani permintaan yang dikirim ke URL tersebut.
Ketika aplikasi dijalankan ( app.run() ), Flask akan memulai server dan API Flask-RESTful akan menjadi aktif. Anda dapat mengirimkan permintaan HTTP ke endpoint yang telah ditentukan, seperti GET /users atau POST /users , dan Flask-RESTful akan memanggil metode yang sesuai dalam kelas UsersResource untuk menangani permintaan tersebut.
Flask-RESTful juga menyediakan fitur tambahan seperti pengelolaan marshaling data, validasi input, pengelolaan error, autentikasi, paginasi, dan banyak lagi. Dengan menggunakan Flask-RESTful, Anda dapat dengan mudah mengembangkan API yang kuat dan dapat diandalkan dengan sedikit usaha.
Implementasi
Nah Stupens setelah sedikit belajar tentang apa itu API dan Flask_restful mari kita coba implementasikan kedalam contoh program sederhana CRUD API. Berikut adalah langkah-langkah umum dalam pembuatan
Flask RESTful API:
1. Instalasi
Pastikan Anda telah menginstal Flask dan Flask-RESTful virtual environment Python Anda. Anda dapat menggunakan pip untuk menginstalnya dengan perintah.
pip install flask flask-restful |
2. Import Modul
Buat file python baru dalam direktori kerja kamu lalu beri nama app.py setelah itu import modul yang akan digunakan yaitu Flask dan Flask-RESTful dengan menambahkan kode berikut di awal file:
#
import library |
3. Konfigurasi APP dan Database
#
flask app |
1.
app = Flask(__name__) :
Baris ini membuat instance aplikasi Flask yang disimpan dalam variabel app . __name__ adalah parameter yang
mengidentifikasi nama modul saat ini. Ini memberi tahu Flask di mana letak
modul dan file-file terkait lainnya.
2.
api =
Api(app) :
Baris ini menginisialisasi objek Api dari Flask-RESTful
menggunakan instance aplikasi Flask (app). Ini menghubungkan objek Api dengan aplikasi Flask yang
telah dibuat sebelumnya, sehingga Flask-RESTful dapat berfungsi dalam konteks
aplikasi tersebut.
3. Konfigurasi database:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost:3306/mahasiswa' :
Baris ini mengkonfigurasi URI atau URL koneksi ke database MySQL dengan menggunakan alamat localhost , port 3306 , dan nama database mahasiswa . Ini berarti aplikasi akan terhubung ke database MySQL dengan pengguna root dan tidak ada kata sandi.
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False :
Baris ini menonaktifkan fitur pelacakan perubahan dalam SQLAlchemy. Ini adalah konfigurasi opsional dan dapat digunakan untuk menghilangkan pesan peringatan yang muncul.
4.
db =
SQLAlchemy(app) :
Baris ini membuat instance SQLAlchemy yang terhubung
dengan aplikasi Flask yang telah dibuat sebelumnya ( app ). SQLAlchemy adalah toolkit Python yang
populer untuk bekerja dengan database relasional. Dengan membuat instance db dari SQLAlchemy dan memberikan app sebagai parameter, kita dapat menggunakan
SQLAlchemy untuk berinteraksi dengan database menggunakan ORM
(Object-Relational Mapping).
4. Membuat Model
#
model |
Kode di atas adalah definisi model Mahasiswa dan pembuatan tabel terkait menggunakan SQLAlchemy dalam Flask. Mari kita bahas baris kode tersebut:
1. class Mahasiswa(db.Model) : Baris ini mendefinisikan kelas Mahasiswa sebagai model yang mewarisi db.Model dari SQLAlchemy. Dengan mewarisi db.Model , kelas Mahasiswa menjadi objek yang dapat dihubungkan dengan tabel di database menggunakan SQLAlchemy.
2. id = db.Column(db.Integer, primary_key=True) : Baris ini mendefinisikan kolom id sebagai kolom integer yang berfungsi sebagai kunci utama (primary key) dalam tabel Mahasiswa . Dengan menandai primary_key=True , kita menunjukkan bahwa kolom ini adalah kunci utama untuk mengidentifikasi setiap entitas Mahasiswa secara unik.
3. nama = db.Column(db.String(50)) , nim = db.Column(db.String(50)) , jurusan = db.Column(db.String(50)) : Baris-baris ini mendefinisikan kolom-kolom lain dalam tabel Mahasiswa dengan tipe data String dan panjang maksimum 50 karakter. Setiap kolom ini akan menyimpan informasi nama, nim, dan jurusan mahasiswa.
4. def __init__(self, nama, nim, jurusan) : Ini adalah metode inisialisasi (constructor) untuk kelas Mahasiswa . Metode ini digunakan untuk membuat instance objek Mahasiswa dengan memberikan nilai awal ke atribut nama , nim , dan jurusan .
5. def __repr__(self) : Ini adalah metode representasi string yang mendefinisikan representasi cetakan objek Mahasiswa ketika direpresentasikan dalam string. Dalam hal ini, objek Mahasiswa akan diwakili sebagai string yang mencakup nama mahasiswa.
6. db.create_all() : Baris ini membuat tabel dalam database berdasarkan definisi model yang telah kita buat. Metode create_all() akan membuat tabel Mahasiswa dalam database yang telah dikonfigurasi sebelumnya.
5. Membuat Resource
Buat kelas baru yang mewarisi kelas Resource dari Flask-RESTful untuk setiap sumber daya yang ingin Anda sediakan. Misalnya, jika Anda ingin menyediakan sumber daya "mahasiswa", Anda dapat membuat kelas MahasiswaResource :
#
resource |
1. MahasiswaResource adalah kelas yang berfungsi sebagai sumber daya (resource) untuk entitas "Mahasiswa" dalam Flask RESTful API.
2. Metode get(self) digunakan untuk mengambil semua data mahasiswa dari database dan mengembalikannya dalam format JSON.
3. Metode post(self) digunakan untuk menambahkan data mahasiswa baru ke database berdasarkan informasi yang diterima melalui formulir permintaan.
4. Metode put(self, id) digunakan untuk memperbarui data mahasiswa dalam database berdasarkan ID yang diberikan.
5. Metode delete(self, id) digunakan untuk menghapus data mahasiswa dari database berdasarkan ID yang diberikan.
6. api.add_resource(MahasiswaResource, '/mahasiswa', '/mahasiswa/<int:id>') menambahkan kelas MahasiswaResource sebagai sumber daya ke objek API Flask-RESTful.
a. Rute /mahasiswa digunakan untuk mengakses endpoint yang mengambil semua data mahasiswa dan menambahkan data baru.
b. Rute /mahasiswa/<int:id> digunakan untuk mengakses endpoint yang memperbarui dan menghapus data mahasiswa berdasarkan ID.
6. Jalankan Aplikasi
jalankan aplikasi Flask dengan menambahkan kode berikut di akhir file:
# run
app |
Sekarang kalian dapat menjalankan file Python tersebut, dan Flask RESTful API akan tersedia di URL yang ditentukan. Misalnya, jika kalian menjalankan aplikasi pada server lokal, API akan dapat diakses melalui http://localhost:5000/users . kalian dapat menggunakan perangkat lunak pengujian API seperti Postman untuk menguji dan berinteraksi dengan endpoint yang telah Anda definisikan.
Nah stupens kita sudah berhasil membuat RESTful API menggunakan flask sekarang mari kita uji aplikasi yang kita buat menggunakan postman untuk mengirim request
✨ Hore Stupenss! kamu telah belajar flask RESTful API dengan menggunakan flask_restful, semoga materi yang disampaikan dapat dipahami ya, jika ada kesulitan silahkan bertanya ya,
jangan lupa untuk mengerjakan quiz dan di bawah juga ada referensi yang dapat kamu gunakan untuk mendalami materi! Semangat belajar Stupenss.
Quiz
1. Flask-RESTful adalah ekstensi dari framework Flask yang digunakan untuk membangun _______.
2. Manfaat menggunakan Flask-RESTful dalam pengembangan API antara lain adanya fitur _______ yang mempermudah pengelolaan sumber daya.
3. Metode HTTP GET dalam Flask-RESTful digunakan untuk _______ data dari server.
4. Untuk mengambil parameter dari URL dalam Flask-RESTful, kita menggunakan tanda _______ dalam definisi rute.
5. Flask-RESTful menyediakan fungsi _______ yang memungkinkan validasi data masukan sebelum diproses.
Referensi
https://realpython.com/flask-connexion-rest-api/
https://www.analyticsvidhya.com/blog/2022/01/rest-api-with-python-and-flask/ https://www.geeksforgeeks.org/python-build-a-rest-api-using-flask/ https://flask-restful.readthedocs.io/en/latest/
https://pythonbasics.org/flask-rest-api/
https://auth0.com/blog/developing-restful-apis-with-python-and-flask/
Flask RESTful API 8