Pada tutorial kali ini, kita akan membuat api dengan python flask. API adalah mekanisme yang memungkinkan 2 komponen perangkat lunak dapat berkomunasi satu sama lain. API sendiri merupakan singkatan dari Application Programming Interface.
Dalam konteks API, kata Aplikasi mengacu pada perangkat lunak apapun dengan fungsi yang berbeda. Antarmuka dapat dianggap sebagai kontrak layanan antara 2 aplikasi. Kontrak ini mendefinisikan bagaimana keduanya berkomunikasi satu sama lain menggunakan request dan responses.
Arsitektur API biasanya dijelaskan dalam istilah klien dan server. Aplikasi yang mengirimkan permintaan disebut klien, dan aplikasi yang mengirim respons disebut server.
Baca Juga
Salah satu API yang populer dan fleksibel yaitu REST APIs. REST adalah singkatan dari Representational State Transfer. REST mendefinisikan serangkaian fungsi seperti GET, PUT, DELETE, dll. yang dapat digunakan klien untuk mengakses data server. Klien dan server bertukar data menggunakan HTTP.
Membuat REST API dengan Python Flask
Setelah kita mengetahui pengertian serta cara kerja API, kemudian kita akan mencoba membuat REST APIs sederhana menggunakan Python Flask.
Pertama kita buka cmd, lalu ketikan perintah dibawah untuk membuat folder baru dengan nama rest-api-nodejs. Kemudian kita buka folder tersebut dengan mengetikan cd nama_folder di cmd.
mkdir rest-api-python && cd rest-api-python
Selanjutnya, kita perlu menginstall beberapa libarary untuk membuat API dengan Python.
pip install flask pymsql
Setelah proses instalasi library berhasil, kemudian kita akan mengimport library yang barusan kita install seperti berikut ini.
from flask import Flask, request, jsonify, make_response import pymysql
Sebelum itu, kita perlu membuat database dengan nama db_sekolah terlebih dahulu. Selanjutnya kita jalankan query berikut pada database yang barusan dibuat untuk membuat table buku.
CREATE TABLE `tb_siswa` ( `nis` bigint(20) NOT NULL, `nama` varchar(255) NOT NULL, `umur` int(11) NOT NULL, `alamat` varchar(255) NOT NULL, PRIMARY KEY (`nis`) )
Setelah itu, kita buat koneksi ke databse mysql dengan bantuan pymsql.connect(). Sesuaikan nama host, user, password, dan database kalian.
# Koneksi ke database MySQL mydb = pymysql.connect( host="localhost", user="root", passwd="", database="db_bookstore" )
Disini kita buat route dengan method get untuk homepage yang akan menampilkan pesan “Belajar Python Flask!”. Kita akan membuat 2 route get untuk homepage yaitu pada url ‘/’ dan ‘/index’.
@app.route('/') @app.route('/index') def index(): return "Belajar Python Flask!"
Selanjutnya, kita buat route dengan method get pada url ‘/get_data_siswa’ untuk melihat semua siswa yang ada di dalam database. Selain itu, kita juga bisa melihat 1 siswa saja dengan menambahkan parameter nis di dalam url. Seperti berikut ‘/get_data_siswa?nis=12345’.
@app.route('/get_data_siswa', methods=['GET']) def get_data_siswa(): query = "SELECT * FROM tb_siswa WHERE 1=1" values = () nis = request.args.get("nis") nama = request.args.get("nama") umur = request.args.get("umur") if nis: query += " AND nis=%s " values += (nis,) if nama: query += " AND nama LIKE %s " values += ("%"+nama+"%", ) if umur: query += " AND umur=%s " values += (umur,) mycursor = mydb.cursor() mycursor.execute(query, values) row_headers = [x[0] for x in mycursor.description] data = mycursor.fetchall() json_data = [] for result in data: json_data.append(dict(zip(row_headers, result))) return make_response(jsonify(json_data),200)
Kemudian, kita buat route dengan method post pada url ‘/insert_data_siswa’ untuk memasukkan data siswa baru ke dalam database.
@app.route('/insert_data_siswa', methods=['POST']) def insert_data_siswa(): hasil = {"status": "gagal insert data siswa"} try: data = request.json query = "INSERT INTO tb_siswa(nis, nama, umur, alamat) VALUES(%s,%s,%s,%s)" values = (data["nis"], data["nama"], data["umur"], data["alamat"],) mycursor = mydb.cursor() mycursor.execute(query, values) mydb.commit() hasil = {"status": "berhasil insert data siswa"} except Exception as e: print("Error: " + str(e)) return jsonify(hasil)
Kita juga akan buat route dengan method put pada url ‘/update_data_siswa’ untuk mengubah siswa yang ada di dalam database.
@app.route('/update_data_siswa', methods=['PUT']) def update_data_siswa(): hasil = {"status": "gagal update data siswa"} try: data = request.json nis_awal = data["nis_awal"] query = "UPDATE tb_siswa SET nis = %s " values = (nis_awal, ) if "nis_ubah" in data: query += ", nis = %s" values += (data["nis_ubah"], ) if "nama" in data: query += ", nama = %s" values += (data["nama"], ) if "umur" in data: query += ", umur = %s" values += (data["umur"], ) if "alamat" in data: query += ", alamat = %s" values += (data["alamat"], ) query += " WHERE nis = %s" values += (nis_awal, ) mycursor = mydb.cursor() mycursor.execute(query, values) mydb.commit() hasil = {"status": "berhasil update data siswa"} except Exception as e: print("Error: " + str(e)) return jsonify(hasil)
Kita juga akan buat route dengan method delete pada url ‘/delete_data_siswa’ untuk menghapus siswa yang ada di dalam database. Selain itu, kita perlu mengirimkan paramater nis di dalam url. Seperti berikut ‘/delete_data_siswa/12345’.
@app.route('/delete_data_siswa/<nis>', methods=['DELETE']) def delete_data_siswa(nis): hasil = {"status": "gagal hapus data siswa"} try: query = "DELETE FROM tb_siswa WHERE nis=%s" values = (nis,) mycursor = mydb.cursor() mycursor.execute(query, values) mydb.commit() hasil = {"status": "berhasil hapus data siswa"} except Exception as e: print("Error: " + str(e)) return jsonify(hasil)
Terakhir kita bisa menjalankan server dengan menggunakan method listen().
if __name__ == '__main__': app.run(host='0.0.0.0', port=5010, debug=True)
Testing API dengan Postman
Kita akan melakukan testing API dengan menggunakan Postman untuk melihat apakah API yang kita buat sudah bisa berjalan dan tidak memiliki eror.
Pertama, kalian harus mendownload Postman terlebih dahulu. Kalian bisa mendownload Postman disini. Lalu pilih sesuai dengan sistem operasi kalian.
Jika sudah berhasil mendownload, lakukan instalasi pada Postman. Instalasi pada Postman sendiri tidak terlalu sulit, kalian hanya perlu klik next saja sampai Postman terinstal di komputer kalian. Terakhir lakukan testing API seperti gambar berikut.