Farih.co.id
Home Programming Cara Membangun REST API Dengan Flask dan Database Postgres

Cara Membangun REST API Dengan Flask dan Database Postgres

Antarmuka Pemrograman Aplikasi (API) adalah bagian penting dalam membangun dan menghubungkan sistem yang berbeda, memungkinkan aplikasi Anda untuk berkomunikasi dan bertukar data dengan layanan lain.


Meskipun pengembangan backend melibatkan lebih dari sekadar menulis API — ini juga mencakup penulisan logika bisnis sisi server, merancang arsitektur sistem yang efisien, dan fungsi utama lainnya, baca terus untuk mempelajari cara membuat CRUD REST API sederhana dengan Flask (kerangka kerja Python yang ringan) , dan basis data Postgres.


Menggunakan Flask untuk Membuat Backend API

Labu adalah framework Python ringan yang menyediakan sejumlah fitur untuk menyederhanakan penulisan API backend untuk klien web yang ditulis menggunakan teknologi berbeda seperti React dan Angular.

Panduan ini akan memandu Anda menulis REST API yang mengimplementasikan empat operasi CRUD: buat, baca, perbarui, dan hapus untuk mengelola data pengguna yang disimpan dalam database Postgres.

Siapkan Database Postgres

Untuk memulai, pergilah ke ElephantSQLsolusi hosting database berbasis cloud yang menyediakan platform untuk membuat dan mengelola database Postgres di cloud, mendaftar, dan masuk ke halaman ikhtisar akun Anda.

Halaman Utama ElephantSQL

Klik Buat Instance Baru untuk membuat instance baru untuk aplikasi Anda.

Buat tombol Instance Baru di platform cloud ElephantSQL

Berikan nama instans Anda dan pilih paket gratis, dan terakhir pilih wilayah tempat instans akan dihosting untuk menyelesaikan proses penyiapan.

Contoh di dasbor

Setelah instance dibuat, navigasikan ke halaman pengaturan dan salin URL basis dataAnda akan menggunakannya untuk membuat koneksi dengan database.

Detail Basis Data Postgres di ElephantSQL

Siapkan Server Flask

Di terminal Anda, buat folder proyek, dan ubah direktori saat ini ke folder baru itu.

Sebelum menginstal Flask, konfirmasikan bahwa Anda menjalankan Python versi 3.6+ di mesin Anda. Jika tidak, Anda perlu menginstal yang terbaru Piton Versi: kapan.

 python --version 

Setelah itu, instal virtualenvuntuk membuat lingkungan pengembangan virtual yang terisolasi.

 pip install virtualenv 

Selanjutnya, jalankan perintah di bawah ini untuk membuat lingkungan virtual.

 virtualenv venv 

Terakhir, aktifkan lingkungan virtual.

 # On Windows: 
.\venv\Scripts\activate
# On Unix or MacOS:
source venv/bin/activate

Instal Paket yang Diperlukan

Di direktori root folder proyek Anda, buat a persyaratan.txt file dan tambahkan paket-paket ini.

 flask
python-dotenv
psycopg2-binary

Selanjutnya, instal paket.

 pip install -r requirements.txt 

Itu psycopg2-binary adalah library Python yang bertindak sebagai middleware, untuk memungkinkan Anda membuat koneksi dengan database Postgres Anda dan melakukan berbagai operasi database.

Terakhir, buat a .env file dan rekatkan URL basis data Anda.

 DATABASE_URL= your database URL 

Buat Server Flask

Terakhir, buat sebuah app.py file di direktori root, dan tambahkan kode di bawah ini.

 import os 
import psycopg2
from dotenv import load_dotenv
from flask import Flask, request, jsonify

load_dotenv()

app = Flask(__name__)
url = os.getenv("DATABASE_URL")
connection = psycopg2.connect(url)

@app.get("https://www.makeuseof.com/")
def home():
    return "hello world"

Kode ini mengatur sebuah instance dari aplikasi Flask. Itu kemudian membuat koneksi ke database yang ditentukan dalam string URL dan terakhir, mengatur rute rumah yang mengembalikan string sebagai respons.

Buat REST API Mengaktifkan Operasi CRUD

Sekarang, bangun REST API yang mengimplementasikan empat operasi CRUD.

Buat Tabel Demo

Buat tabel pengguna di dalam database.

Di file app.py, tambahkan kode di bawah ini.

 CREATE_USERS_TABLE = "CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY, name TEXT);"

with connection:
    with connection.cursor() as cursor:
        cursor.execute(CREATE_USERS_TABLE)

  • Kode ini membuat tabel PostgreSQL baru bernama pengguna dengan dua kolom.
  • Itu menggunakan metode koneksi psycopg2 untuk membuat koneksi dengan database dan membuat objek kursor baru menggunakan connection.cursor metode yang digunakan untuk mengeksekusi query SQL.

1. Tentukan Metode POST

Buat rute pos untuk menambahkan data.

 INSERT_USER_RETURN_ID = "INSERT INTO users (name) VALUES (%s) RETURNING id;"
@app.route("/api/user", methods=["POST"])
def create_user():
    data = request.get_json()
    name = data["name"]
    with connection:
        with connection.cursor() as cursor:
            cursor.execute(INSERT_USER_RETURN_ID, (name,))
            user_id = cursor.fetchone()[0]
    return {"id": user_id, "name": name, "message": f"User {name} created."}, 201
  • String kueri SQL mendefinisikan pernyataan SQL yang akan dieksekusi menggunakan kursor.eksekusi metode untuk menyisipkan baris baru dengan nama pengguna ke dalam pengguna tabel di database. Ini mengembalikan ID pengguna yang baru dibuat.
  • Itu buat pengguna fungsi mengambil nama sebagai parameter untuk disimpan dalam database sementara kursor.ambil metode dipanggil untuk mengambil ID pengguna yang baru dibuat. Terakhir, sebuah kamus yang berisi ID dan nama pengguna yang baru dibuat, bersama dengan pesan yang menunjukkan bahwa pengguna telah berhasil dibuat, dikembalikan.

Rute permintaan Post Method API

2. Tentukan Metode GET

Tetapkan dua rute pengambilan: satu, untuk mengambil semua data dalam database, dan dua, untuk mengambil data tertentu dari database berdasarkan ID.

 SELECT_ALL_USERS = "SELECT * FROM users;"

@app.route("/api/user", methods=["GET"])
def get_all_users():
    with connection:
        with connection.cursor() as cursor:
            cursor.execute(SELECT_ALL_USERS)
            users = cursor.fetchall()
            if users:
                result = []
                for user in users:
                    result.append({"id": user[0], "name": user[1]})
                return jsonify(result)
            else:
                return jsonify({"error": f"Users not found."}), 404

@app.route("/api/user/<int:user_id>", methods=["GET"])
def get_user(user_id):
    with connection:
        with connection.cursor() as cursor:
            cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
            user = cursor.fetchone()
            if user:
                return jsonify({"id": user[0], "name": user[1]})
            else:
                return jsonify({"error": f"User with ID {user_id} not found."}), 404

  • Rute API pertama ini menangani permintaan HTTP GET untuk mengambil semua pengguna dari database. Ini mengambil semua pengguna dari database dan mengembalikan hasilnya dalam format JSON sebagai respons.
    Rute Dapatkan Semua Pengguna API

  • Rute API kedua ini menangani permintaan HTTP GET untuk mengambil data untuk pengguna tertentu dari database. Dibutuhkan di identitas pengguna sebagai parameter, mengambil data pengguna dari database, dan mengembalikan hasilnya dalam format JSON dalam respons.
    Dapatkan rute User By ID API

3. Tentukan Metode PUT

Buat rute put untuk memperbarui data yang disimpan dalam database.

 @app.route("/api/user/<int:user_id>", methods=["PUT"])
def update_user(user_id):
    data = request.get_json()
    name = data["name"]
    with connection:
        with connection.cursor() as cursor:
            cursor.execute(UPDATE_USER_BY_ID, (name, user_id))
            if cursor.rowcount == 0:
                return jsonify({"error": f"User with ID {user_id} not found."}), 404
    return jsonify({"id": user_id, "name": name, "message": f"User with ID {user_id} updated."})
  • Itu perbarui_pengguna fungsi mengambil parameter ID pengguna sebagai input dan menggunakannya untuk memperbarui nama pengguna yang ditentukan dalam database.
  • Jika operasi pembaruan berhasil, ia mengembalikan objek JSON dengan ID pengguna yang diperbarui, nama, dan pesan sukses dalam respons.
    Perbarui rute User By ID API

4. Tentukan Metode HAPUS

Terapkan rute hapus untuk menghapus data yang disimpan dari pengguna tertentu dalam database.

 @app.route("/api/user/<int:user_id>", methods=["DELETE"])
def delete_user(user_id):
    with connection:
        with connection.cursor() as cursor:
            cursor.execute(DELETE_USER_BY_ID, (user_id,))
            if cursor.rowcount == 0:
                return jsonify({"error": f"User with ID {user_id} not found."}), 404
    return jsonify({"message": f"User with ID {user_id} deleted."})
  • Rute API ini menangani fungsi hapus pengguna tertentu dari database berdasarkan ID mereka. Jika pengguna tidak ditemukan, ia mengembalikan kode status 404 dengan pesan kesalahan. Namun, jika operasi penghapusan berhasil, ia mengembalikan objek JSON dengan pesan sukses sebagai respons.
    Hapus User By ID rute API

Panduan ini mendemonstrasikan cara menggunakan Flask dan Postgres untuk membuat CRUD REST API sederhana, cara membuat koneksi database dan menjalankan kueri SQL yang berbeda untuk membaca dan menulis data ke database. Anda sekarang dapat membuat REST API sederhana yang dapat menangani empat operasi CRUD yang diperlukan dalam aplikasi web apa pun.

Apakah Anda sedang membangun blog sederhana atau aplikasi web yang kompleks, Flask dan Postgres menawarkan fitur dan kemampuan canggih yang diperlukan untuk membuat sistem backend yang tangguh. Sebagai alternatif, Anda dapat menggunakan teknologi lain seperti FastAPI dan MongoDB untuk membuat RESTful API.

Comment
Share:

Leave a Reply

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

https://167.71.217.241/ https://188.166.210.27/ https://103.253.147.8/ https://139.59.194.132/ https://152.42.192.54/ https://152.42.187.123/ https://188.166.196.248/ https://163.47.9.78/ https://157.230.245.144/ http://68.183.96.87/ http://147.182.210.122/ http://147.182.128.234/ http://167.172.1.184/ http://157.245.5.74/ http://139.59.217.59/ http://163.47.9.16/ http://144.126.251.215/ http://139.59.217.128/ http://103.186.0.254/ http://161.35.251.176/ http://157.245.29.71/ https://170.64.254.102/ https://www.markas303.ac.id/ https://www.markas303.or.id/ https://www.markas303.sch.id/ http://103.172.205.75/ http://103.245.38.119/ http://138.197.224.231/ http://138.197.224.231/

Ad