cara membuat api dengan python flask

Cara Membuat API dengan Python Flask

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.

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.

Testing API Python Flask untuk mendapatkan semua data siswa
Testing Route GET untuk mendapatkan semua data siswa
Testing API untuk menambahkan data siswa baru
Testing Route POST untuk menambahkan data siswa baru
Testing API untuk mengubah data siswa
Testing Route PUT untuk mengubah data siswa dengan nis_awal 17252
Testing API Python Flask untuk menghapus data siswa
Testing Route DELETE untuk menghapus data siswa dengan nis 17252

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top