Flower Classification API

Deskripsi

Dokumentasi API untuk mengelola user, data bunga, dan klasifikasi gambar bunga dalam sistem.


BASE URL

Fungsi Base URL
API User & Data Bunga http://localhost:3000/api
API Klasifikasi Gambar Bunga http://localhost:3200/api

Autentikasi

API ini menggunakan autentikasi berbasis JWT ( Web Token). Setiap request yang memerlukan autentikasi harus menyertakan token di header Authorization dengan format:

Authorization: Bearer <token>

Endpoints

1. Register User

Method: POST /auth/register

Base URL: http://localhost:3000/api

Request Body:

{
  "username": "user123",
  "password": "password123"
}

Response:

  • 201 Created { "status": "success", "message": "User berhasil didaftarkan!", "data": { "id": 1, "username": "user123" } }
  • 400 Bad Request { "status": "error", "message": "Username sudah terdaftar, gunakan username yang lain!!" } { "status": "error", "message": "Username dan password wajib diisi!!" }
  • 500 Internal Server Error { "status": "error", "message": "Terjadi kesalahan pada server!!", "error": "err.message" }

2. Login User

Method: POST /auth/login

Base URL: http://localhost:3000/api

Request Body:

{
  "username": "user123",
  "password": "password123"
}

Response:

  • 200 OK { "status": "success", "message": "Login berhasil!", "token": "jwt-token" }
  • 400 Bad Request { "status": "error", "message": "Username dan Password wajib diisi!!" }
  • 401 Unauthorized { "status": "error", "message": "Username atau password salah!!" }
  • 500 Internal Server Error { "status": "error", "message": "Terjadi kesalahan pada server!!", "error": "err.message" }

3. Mendapatkan Semua Data Bunga

Method: GET /flowers

Base URL: http://localhost:3000/api

Headers:

Authorization: Bearer <token>

Response:

  • 200 OK { "status": "success", "message": "Data bunga berhasil diambil!", "data": [ { "id": 1, "name": "Rose", "scientific_name": "Rosa", "description": "Bunga berwarna merah yang melambangkan cinta.", "health_uses": "Digunakan untuk minyak esensial", "culture_uses": "Sering digunakan dalam pernikahan", "sunlight_tips": "Membutuhkan sinar matahari penuh", "water_tips": "Disiram setiap hari", "soil_tips": "Tanah yang subur dan gembur", "habitat": "Taman dan kebun", "status": "Tumbuh dengan baik", "wikipedia": "https://en.wikipedia.org/wiki/Rose" } ] }
  • 401 Unauthorized { "status": "error", "message": "Akses ditolak. Token tidak ditemukan!!" }
  • 500 Internal Server Error { "status": "error", "message": "Terjadi kesalahan pada server!!", "error": "err.message" }

4. Menambahkan Data Bunga

Method: POST /flowers

Base URL: http://localhost:3000/api

Headers:

Authorization: Bearer <token>

Request Body:

{
  "name": "string",
  "scientific_name": "string",
  "description": "string",
  "health_uses": "string",
  "culture_uses": "string",
  "sunlight_tips": "string",
  "water_tips": "string",
  "soil_tips": "string",
  "habitat": "string",
  "status": "string",
  "wikipedia": "string"
}

Response:

  • 201 Created { "status": "success", "message": "Data bunga berhasil ditambahkan!", "data": { "id": 1, "name": "string", "scientific_name": "string", "description": "string", "health_uses": "string", "culture_uses": "string", "sunlight_tips": "string", "water_tips": "string", "soil_tips": "string", "habitat": "string", "status": "string", "wikipedia": "string" } }
  • 401 Unauthorized { "status": "error", "message": "Akses ditolak. Token tidak ditemukan!!" }
  • 500 Internal Server Error { "status": "error", "message": "Terjadi kesalahan pada server!!", "error": "err.message" }

5. Mendapatkan Data Bunga Berdasarkan ID

Method: GET /flowers/{id}

Base URL: http://localhost:3000/api

Headers:

Authorization: Bearer <token>

Response:

  • 200 OK { "status": "success", "message": "Data bunga berhasil diambil!", "data": { "id": 2, "name": "Sunflower", "scientific_name": "Helianthus annuus", "description": "Bunga besar yang mengikuti arah matahari.", "health_uses": "Minyak bijinya digunakan untuk kesehatan.", "culture_uses": "Melambangkan kebahagiaan dan kesetiaan.", "sunlight_tips": "Butuh sinar matahari penuh.", "water_tips": "Disiram secukupnya.", "soil_tips": "Tanah berpasir dengan drainase baik.", "habitat": "Padang rumput dan lahan pertanian.", "status": "Tumbuh subur", "wikipedia": "https://en.wikipedia.org/wiki/Sunflower" } }
  • 404 Not Found { "status": "error", "message": "Data bunga tidak ditemukan!!" }

  • 500 Internal Server Error { "status": "error", "message": "Terjadi kesalahan pada server!!", "error": "err.message" }


6. Klasifikasi Gambar Bunga

Method: POST /classify

Base URL: http://localhost:3200/api

Headers:

Content-Type: application/json

Request Body:

{
  "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..." 
}

Response:

  • 200 OK { "predicted_class": number, "prediction": [ [ number ] ] }
  • 500 Internal Server Error { "error": "err.message" }

Schema Table Data


Table users

Field Tipe Data Deskripsi
id integer, primary key ID unik user
username varchar(100) Nama user
password text Password user

Table flowers


SQL table flowers data

SQL file link: flowers_data.sql


Field Tipe Data Deskripsi
id integer, primary key ID unik bunga
name varchar(100) Nama bunga
scientific_name varchar(150) Nama ilmiah bunga
description text Deskripsi bunga
health_uses text[] Manfaat kesehatan
culture_uses text[] Kegunaan budaya
sunlight_tips text Tips pencahayaan
water_tips text Tips penyiraman
soil_tips text Jenis tanah yang cocok
habitat text Habitat alami bunga
status varchar(100) Status pertumbuhan
wikipedia varchar(255) Link Wikipedia

Status Response

Kode Deskripsi
200 OK
201 Created
400 Bad Request
401 Unauthorized
404 Not Found
500 Internal Server Error