Part-6-API-Page-Setup
CodeIgniter4,  MYSQL,  PhpMyAdmin,  React Native,  Snack Expo

Blog Development and Profile Management Using CodeIgniter4 (Part 6 – Integrating Backend API to Snack Expo Mobile App)

Created by: Anisa Damayanti, S.Kom.
For Study Purpose Only!

Pada bagian sebelumnya (Part 5) kita telah menyelesaikan setup halaman profile di sisi web menggunakan CodeIgniter 4. Pada tahap ini kita akan melangkah lebih jauh dengan menghubungkan back-end API dari CodeIgniter 4 ke front-end mobile menggunakan Snack Expo (React Native).

Langkah ini merupakan bagian penting dari pengembangan sistem yang lebih modern, karena memungkinkan data dari website (back-end) ditampilkan secara real-time pada perangkat mobile, baik menggunakan emulator maupun perangkat fisik (smartphone).

A. Pengantar & Tujuan

Integrasi API menjadi jembatan antara back-end (server) dan tampilan mobile (client). Dalam proyek ini, tujuan utamanya:

  1. Membuat endpoint API di CodeIgniter4 untuk blog dan profile penulis (keseluruhan data profile termasuk jumlah posting).
  2. Menghubungkan aplikasi React Native (Snack Expo) agar bisa memanggil API tersebut (fetch), menampilkan data blog & profile, melakukan refresh, serta menampilkan foto profil ataupun gambar pada blog.

Hasil yang diharapkan: ketika seseorang menambahkan blog melalui website back-end, maka aplikasi mobile akan langsung memuat data terbaru. Demikian juga profile penulis hanya akan muncul di aplikasi setelah penulis membuat postingan minimal 1 post.

Baca artikel mengenai Konsep React Native dan Snack Expo di sini

B. Tools Equipment

  • Server XAMPP
  • IDE Visual Studio Code
  • Web Browser with latest version (Chrome, Chrome Developer, Mozilla Firefox, Microsoft Edge)
  • IP Address dari WIFI atau Hotspot
  • Perangkat fisik Android/iOS yang sudah ter-install Expo Go
  • IDE Snack Expo
  • Project myblog-nama-kelas yang sudah dibuat sebelumnya (Part 1-5)
  • Pada terminal folder project myblog-nama-kelas menjalankan perintah
    – macOS: php spark serve –host 0.0.0.0 –port 8080
    – windows: php -S IPv4Address:8080 -t public

C. Langkah-langkah Aktifasi Endpoint API CodeIgniter4

  • Pada aplikasi XAMPP pastikan mengaktifkan Module Apache dan MySQL dengan mengklik tombol Start

  • Pada VSCode pastikan sudah membuka folder project yang sudah dibuat sebelumnya
Contoh membuka folder myblog-anisa-xiirpl3

1. Persiapan Konfigurasi Blog Model, Controller, & Route

Blog Model
  • Bukalah folder app/Models/BlogModel.php
  • Tambahkan isi file BlogModel.php dengan paragraf script berikut lalu simpan

Blog Controller
  • Bukalah folder app/Controllers
  • Buatlah folder baru bernama Api di dalam folder app/Controllers

  • Selanjutnya buatlah file baru bernama BlogApiController.php di dalam folder app/Controllers/Api

  • Tambahkan isi file BlogApiController.php dengan paragraf script berikut lalu simpan

Route
  • Bukalah folder app/Config
  • Ubah file Routes.php dengan mendaftarkan url baru untuk memanggil API Blog lalu simpan

  • Kemudian pada file App.php cari line $baseURL dan ubah http://localhost/myblog-nama-kelas/public/ menjadi http://IPv4Address:8080/ lalu simpan
Contoh mengubah menjadi http://172.xx.xx.xx:8080/
  • Pada terminal di dalam folder project myblog-nama-kelas jalankan perintah:
    – macOS: php spark serve –host 0.0.0.0 –port 8080
    – windows: php -S IPv4Address:8080 -t public
pilih New Terminal
[macOS] contoh menjalankan perintah php spark serve –host 0.0.0.0 –port 8080
[windows] contoh menjalankan perintah php -S 10.xx.xx.xx:8080 -t public
[macOS] tampilan terminal jika berhasil menjalankan php spark serve
[windows] tampilan terminal jika berhasil menjalankan php spark serve
  • Selanjutnya mencoba memanggil API blog pada Web Browser dengan mengetikan url berikut: IPv4Address:8080/api/blogs, kemudian tekan Enter
Contoh memanggil url
172.xx.xx.xx:8080/api/blogs dengan metode php spark serve

2. Persiapan Konfigurasi Profile Model, Controller, & Route

Profile Model
  • Bukalah folder app/Models/ProfileModel.php
  • Tambahkan isi file ProfileModel.php dengan paragraf script berikut lalu simpan

Profile Controller
  • Bukalah folder app/Controllers
  • Buatlah file baru bernama ProfileApiController.php di dalam folder app/Controllers/Api

  • Tambahkan isi file ProfileApiController.php dengan paragraf script berikut lalu simpan

Route
  • Bukalah folder app/Config
  • Ubah file Routes.php dengan mendaftarkan url baru untuk memanggil API Profile lalu simpan

  • Pada terminal di dalam folder project myblog-nama-kelas jalankan perintah:
    – macOS: php spark serve –host 0.0.0.0 –port 8080
    – windows: php -S IPv4Address:8080 -t public
pilih New Terminal
[macOS] contoh menjalankan perintah php spark serve –host 0.0.0.0 –port 8080
[windows] contoh menjalankan perintah php -S 10.xx.xx.xx:8080 -t public
[macOS] tampilan terminal jika berhasil menjalankan php spark serve
[windows] tampilan terminal jika berhasil menjalankan php spark serve
  • Selanjutnya mencoba memanggil API Profile pada Web Browser dengan mengetikan url berikut: IPv4Address:8080/api/profiles, kemudian tekan Enter
Contoh memanggil url
172.xx.xx.xx:8080/api/profiles dengan metode php spark serve

D. Langkah-langkah Membangun Front-end Mobile Snack Expo

  • Pada web browser, buka laman Expo.dev dan disarankan untuk login dengan akun gmail yang dimiliki sebelum melanjutkan ke tahapan selanjutnya
Contoh menjalankan aplikasi bernama happy red cake di emulator website Snack Expo

1. Persiapan Halaman Splash Screen dan Home Screen

  • Setelah memiliki 1 project snack expo, silakan untuk mengunggah logo project di dalam folder assets
Contoh mengunggah logo bernama logomyblog.png
  • Buatlah file baru bernama PageHeader.js di dalam folder components

  • Tambahkan isi file PageHeader.js dengan paragraf script berikut lalu simpan

  • Buatlah folder baru yang bernama constants

  • Kemudian di dalam folder constants, buatlah file baru bernama color.js

  • Tambahkan isi file color.js dengan paragraf script berikut lalu simpan

  • Buatlah folder baru yang bernama screens

  • Kemudian di dalam folder screens, buatlah file baru bernama SplashScreen.js

  • Tambahkan isi file SplashScreen.js dengan paragraf script berikut lalu simpan

  • Pada file App.js ubahlah seluruh script yang ada dengan paragraf script berikut lalu simpan

  • Jika muncul error seperti di bawah ini, klik Add depedency
Klik Add depedency sampai tidak memunculkan error
  • Bukalah aplikasi Expo Go pada perangkat fisik Android/iOS, login menggunakan akun yang sama dengan Snack Expo, lalu pilih folder project yang sedang dibangun

Contoh menjalankan folder project yang bernama MyBlog

  • Di dalam folder screens, buatlah file baru bernama HomeScreen.js

  • Copy seluruh paragraf script berikut dan Paste ke dalam file HomeScreen.js lalu simpan
import React, { useEffect, useState } from "react";
import { SafeAreaView, FlatList, Text, TouchableOpacity, RefreshControl, View, StyleSheet } from "react-native";
import { ActivityIndicator } from "react-native-paper";
import { themeColor } from "../constants/colors";

import PageHeader from "../components/PageHeader";

export default function HomeScreen({ navigation }) {
  return (
    <SafeAreaView style={styles.container}>
      <PageHeader title="Welcome to Our Blog" subtitle="Discover the latest stories and creative writings from our blogger"/>
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: themeColor,
  },
  card: {
    backgroundColor: "#fff",
    padding: 15,
    marginHorizontal: 18,
    marginBottom: 12,
    borderRadius: 12,
    shadowColor: "#000",
    shadowOpacity: 0.1,
    shadowOffset: { width: 0, height: 3 },
    shadowRadius: 5,
    elevation: 4,
    borderWidth: 1,
    borderColor: "rgba(230,230,230,0.7)",
  },
  title: {
    fontSize: 18,
    fontWeight: "600",
    color: "#222",
    marginBottom: 4,
  },
  meta: {
    fontSize: 12,
    color: "#777",
    marginBottom: 6,
  },
  content: {
    color: "#666",
  },
  button: {
    marginTop: 10,
    marginBottom: 25,
    padding: 12,
    backgroundColor: "#333",
    borderRadius: 8,
    alignItems: "center",
    marginHorizontal: 18,
  },
  buttonText: {
    color: "#fff",
    fontWeight: "600",
  },
  loadingContainer: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: themeColor,
  },
  loadingText: {
    marginTop: 10,
    color: "#333",
    fontSize: 16,
  },
  overlay: {
    position: "absolute",
    top: 0,
    left: 0,
    right: 0,
    bottom: 0,
    backgroundColor: "rgba(255,255,255,0.7)",
    justifyContent: "center",
    alignItems: "center",
    zIndex: 10,
  },
  overlayText: {
    marginTop: 10,
    color: "#333",
    fontSize: 16,
  },
});
JavaScript

  • Selanjutnya tambahkan paragraf script berikut di dalam file HomeScreen.js lalu simpan

  • Ubah file App.js dengan mengimpor beberapa depedency di bagian atas sebelum function App

  • Kemudian tambahkan function MainTabs lalu simpan

  • Selanjutnya alamatkan function MainTabs pada bagian NavigationContainer lalu simpan

  • Jika muncul error seperti di bawah ini, klik Add depedency
Klik Add depedency sampai tidak memunculkan error

  • Bukalah aplikasi Expo Go pada perangkat fisik Android/iOS, login menggunakan akun yang sama dengan Snack Expo, lalu pilih folder project yang sedang dibangun

Contoh menjalankan folder project yang bernama MyBlog dengan halaman Home yang sudah terisi data

a founder of december skies code, a software engineering teacher, and a lifelong learner who just tries her best at whatever she does. let's work together!

Leave a Reply

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