m.techreview.click
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development
No Result
View All Result
m.techreview.click
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development
No Result
View All Result
m.techreview.click
No Result
View All Result
Home Aplikasi

Laravel Route: Mendefinisikan URL Aplikasi Web Anda dengan Mudah

venus by venus
June 16, 2025
in Aplikasi, Development, Laravel, URL, Web
0
Share on FacebookShare on Twitter

Dalam pengembangan aplikasi web menggunakan Laravel, Laravel Route: Mendefinisikan URL Aplikasi Web merupakan fondasi utama. Tanpa route yang terdefinisi dengan baik, aplikasi Anda tidak akan tahu bagaimana merespons permintaan dari pengguna. Artikel ini akan membahas secara mendalam bagaimana cara mendefinisikan route dalam Laravel, mulai dari yang paling dasar hingga yang lebih kompleks, beserta contoh penggunaannya. Mari kita mulai!

1. Pengantar: Apa itu Laravel Route dan Mengapa Penting?

Laravel Route adalah cara Laravel mengarahkan permintaan HTTP (seperti GET, POST, PUT, DELETE) ke controller atau closure tertentu. Route bertindak sebagai peta jalan yang menghubungkan URL aplikasi Anda dengan logika yang seharusnya dieksekusi ketika URL tersebut diakses.

Mengapa penting? Bayangkan aplikasi web tanpa route. Ketika pengguna mengakses www.example.com/tentang-kami, bagaimana aplikasi tahu konten apa yang harus ditampilkan? Di sinilah route berperan. Route memberi tahu aplikasi, “Ketika seseorang mengakses /tentang-kami dengan metode GET, jalankan fungsi ‘tampilkanTentangKami’ dalam controller ‘TentangKamiController’.”

Dengan kata lain, Laravel Route: Mendefinisikan URL Aplikasi Web adalah tulang punggung dari navigasi aplikasi Anda. Route yang terstruktur dengan baik akan membuat aplikasi Anda lebih terorganisir, mudah dipelihara, dan ramah SEO.

Related Post

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

June 26, 2025

Cara Meningkatkan Keamanan Website Laravel dari Serangan Hacker

June 26, 2025

Top 5 Package Laravel yang Mempermudah Pengembangan Website Anda

June 26, 2025

Cara Menggunakan Laravel Eloquent untuk Query Database: Panduan Lengkap

June 25, 2025

2. Dasar-Dasar Pendefinisian Route di Laravel

Laravel menyediakan beberapa cara untuk mendefinisikan route. Cara yang paling umum adalah dengan menggunakan file routes/web.php (untuk route berbasis web) dan routes/api.php (untuk route API). Kita akan fokus pada routes/web.php terlebih dahulu.

2.1. Route Sederhana dengan Closure

Cara termudah untuk mendefinisikan route adalah dengan menggunakan closure (fungsi anonim). Contohnya:

use IlluminateSupportFacadesRoute;

Route::get('/', function () {
    return 'Selamat datang di aplikasi Laravel saya!';
});

Kode di atas mendefinisikan route yang merespons permintaan GET ke URL /. Ketika pengguna mengakses URL tersebut, closure akan dieksekusi dan menampilkan teks “Selamat datang di aplikasi Laravel saya!”.

2.2. Route dengan Controller

Mendefinisikan semua logika dalam closure bisa menjadi berantakan untuk aplikasi yang lebih besar. Sebagai gantinya, sebaiknya gunakan controller.

Pertama, buat controller baru menggunakan Artisan:

php artisan make:controller HomeController

Kemudian, definisikan method di dalam controller tersebut, misalnya:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class HomeController extends Controller
{
    public function index()
    {
        return view('home'); // Asumsi ada view 'home.blade.php'
    }
}

Selanjutnya, definisikan route yang mengarah ke method tersebut:

use IlluminateSupportFacadesRoute;
use AppHttpControllersHomeController;

Route::get('/', [HomeController::class, 'index']);

Kode di atas mendefinisikan route yang merespons permintaan GET ke URL / dan mengeksekusi method index di HomeController.

2.3. Metode HTTP Lainnya (POST, PUT, DELETE, dll.)

Selain GET, Laravel mendukung metode HTTP lainnya:

  • POST: Digunakan untuk mengirim data ke server (misalnya, mengirim formulir).
  • PUT: Digunakan untuk memperbarui data yang sudah ada.
  • DELETE: Digunakan untuk menghapus data.
  • PATCH: Digunakan untuk memperbarui sebagian data.

Contoh penggunaan POST:

Route::post('/simpan-data', [DataController::class, 'simpan']);

Kode di atas mendefinisikan route yang merespons permintaan POST ke URL /simpan-data dan mengeksekusi method simpan di DataController.

3. Route Parameters: Mengirim Data ke Route

Route parameters memungkinkan Anda mengirim data dinamis ke route Anda. Misalnya, Anda ingin menampilkan profil pengguna berdasarkan ID.

3.1. Mendefinisikan Route dengan Parameter

Anda dapat mendefinisikan parameter dalam route dengan menggunakan kurung kurawal {}:

Route::get('/pengguna/{id}', [UserController::class, 'tampilkan']);

Dalam contoh di atas, {id} adalah parameter. Ketika pengguna mengakses URL /pengguna/123, nilai 123 akan dikirim sebagai parameter ke method tampilkan di UserController.

3.2. Mengakses Parameter di Controller

Anda dapat mengakses parameter di controller dengan memasukkannya sebagai argumen ke method:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class UserController extends Controller
{
    public function tampilkan($id)
    {
        $pengguna = Pengguna::findOrFail($id); // Cari pengguna berdasarkan ID
        return view('pengguna.profil', ['pengguna' => $pengguna]);
    }
}

Dalam contoh di atas, nilai parameter id dikirim ke method tampilkan dan digunakan untuk mencari pengguna di database.

3.3. Optional Parameters

Anda dapat membuat parameter opsional dengan menambahkan tanda tanya ? setelah nama parameter:

Route::get('/blog/{kategori?}', [BlogController::class, 'index']);

Jika parameter kategori tidak ada dalam URL (misalnya, /blog), nilai argumen $kategori di controller akan menjadi null.

4. Named Routes: Membuat Route Lebih Mudah Dipelihara

Named Routes memberi Anda cara untuk memberi nama pada route Anda. Ini membuat kode Anda lebih mudah dipelihara karena Anda dapat merujuk ke route menggunakan namanya, daripada URL-nya.

4.1. Mendefinisikan Named Route

Anda dapat memberi nama pada route menggunakan method name():

Route::get('/profil', [ProfilController::class, 'index'])->name('profil.index');

Dalam contoh di atas, route dengan URL /profil diberi nama profil.index.

4.2. Menggunakan Named Route di View dan Controller

Anda dapat menggunakan named route dalam view dan controller menggunakan fungsi route():

// Di View (Blade)
<a href="{{ route('profil.index') }}">Lihat Profil</a>

// Di Controller
return redirect()->route('profil.index');

Jika URL untuk route /profil berubah di masa mendatang, Anda hanya perlu memperbarui definisinya di file route. Semua referensi ke route tersebut (menggunakan route('profil.index')) akan otomatis diperbarui. Ini menghindari kebutuhan untuk mencari dan mengganti URL secara manual di seluruh aplikasi Anda.

5. Route Grouping: Mengorganisir Route Anda

Route Grouping memungkinkan Anda untuk mengelompokkan route yang memiliki karakteristik yang sama (misalnya, middleware, namespace, prefix URL). Ini membuat kode route Anda lebih terorganisir dan mudah dibaca.

5.1. Route Groups dengan Middleware

Middleware digunakan untuk memfilter permintaan HTTP yang masuk ke aplikasi Anda. Misalnya, Anda dapat menggunakan middleware untuk memastikan bahwa hanya pengguna yang terautentikasi yang dapat mengakses route tertentu.

Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profil', [ProfilController::class, 'index']);
});

Dalam contoh di atas, semua route di dalam grup akan menggunakan middleware auth. Artinya, hanya pengguna yang terautentikasi yang dapat mengakses URL /dashboard dan /profil.

5.2. Route Groups dengan Prefix URL

Prefix URL digunakan untuk menambahkan awalan ke semua URL dalam grup. Misalnya, Anda ingin semua route yang berkaitan dengan admin diawali dengan /admin.

Route::prefix('admin')->group(function () {
    Route::get('/dashboard', [AdminDashboardController::class, 'index']);
    Route::get('/pengguna', [AdminUserController::class, 'index']);
});

Dalam contoh di atas, semua route di dalam grup akan diawali dengan /admin. Artinya, URL untuk dashboard admin adalah /admin/dashboard dan URL untuk daftar pengguna admin adalah /admin/pengguna.

5.3. Route Groups dengan Namespace

Namespace digunakan untuk menentukan namespace controller yang akan digunakan untuk route dalam grup.

Route::namespace('Admin')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']); // AppHttpControllersAdminDashboardController
    Route::get('/pengguna', [UserController::class, 'index']); // AppHttpControllersAdminUserController
});

Dalam contoh di atas, semua controller yang digunakan dalam route di dalam grup akan berada di namespace AppHttpControllersAdmin. Ini berguna untuk memisahkan controller untuk bagian admin dari aplikasi Anda.

6. Resource Controllers: CRUD Operations dengan Mudah

Resource Controllers adalah cara praktis untuk mengelola operasi CRUD (Create, Read, Update, Delete) untuk suatu sumber daya (misalnya, artikel, produk, pengguna).

6.1. Membuat Resource Controller

Anda dapat membuat resource controller menggunakan Artisan:

php artisan make:controller ArtikelController --resource

Perintah di atas akan membuat controller ArtikelController dengan method berikut:

  • index: Menampilkan daftar semua artikel.
  • create: Menampilkan formulir untuk membuat artikel baru.
  • store: Menyimpan artikel baru ke database.
  • show: Menampilkan artikel tertentu.
  • edit: Menampilkan formulir untuk mengedit artikel.
  • update: Memperbarui artikel yang sudah ada di database.
  • destroy: Menghapus artikel dari database.

6.2. Mendefinisikan Resource Route

Anda dapat mendefinisikan resource route menggunakan method resource():

Route::resource('artikel', ArtikelController::class);

Kode di atas akan mendaftarkan semua route yang diperlukan untuk operasi CRUD pada sumber daya artikel. Ini jauh lebih ringkas daripada mendefinisikan setiap route secara manual.

6.3. Memodifikasi Resource Route

Anda dapat memodifikasi route yang dihasilkan oleh resource() dengan menggunakan opsi only atau except:

// Hanya mendaftarkan route untuk index, show, create, dan store
Route::resource('artikel', ArtikelController::class)->only(['index', 'show', 'create', 'store']);

// Mendaftarkan semua route kecuali destroy
Route::resource('artikel', ArtikelController::class)->except(['destroy']);

7. Route Model Binding: Menggunakan Model Secara Otomatis

Route Model Binding memungkinkan Anda untuk secara otomatis mengambil instance model berdasarkan parameter route. Ini menyederhanakan kode Anda dan mengurangi boilerplate.

7.1. Implicit Binding

Dengan implicit binding, Laravel secara otomatis mencoba mencari instance model yang sesuai dengan parameter route.

use AppModelsArtikel;
use IlluminateSupportFacadesRoute;

Route::get('/artikel/{artikel}', function (Artikel $artikel) {
    return view('artikel.tampilkan', ['artikel' => $artikel]);
});

Dalam contoh di atas, Laravel akan secara otomatis mencoba mencari instance model Artikel dengan ID yang sesuai dengan parameter {artikel}. Jika instance model ditemukan, maka instance tersebut akan dikirim sebagai argumen ke closure. Jika tidak ditemukan, maka akan menghasilkan error 404.

7.2. Explicit Binding

Dengan explicit binding, Anda dapat menentukan sendiri bagaimana instance model harus diambil. Ini berguna jika Anda perlu melakukan logika khusus untuk mencari model.

Di RouteServiceProvider.php, Anda dapat mendefinisikan binding:

public function boot()
{
    Route::model('artikel', AppModelsArtikel::class); // Laravel 8 dan sebelumnya

    Route::bind('artikel', function ($value) { // Laravel 9 dan seterusnya
        return AppModelsArtikel::where('slug', $value)->firstOrFail();
    });

    parent::boot();
}

Dalam contoh di atas, kita mendefinisikan bahwa ketika parameter {artikel} digunakan, Laravel harus mencari instance model Artikel berdasarkan kolom slug bukan id.

8. CSRF Protection pada Route

CSRF (Cross-Site Request Forgery) adalah jenis serangan yang memungkinkan penyerang untuk melakukan tindakan atas nama pengguna tanpa sepengetahuan mereka. Laravel secara otomatis melindungi aplikasi Anda dari serangan CSRF dengan menggunakan token CSRF.

8.1. Mengaktifkan CSRF Protection

CSRF protection diaktifkan secara default di Laravel. Anda tidak perlu melakukan apa pun untuk mengaktifkannya.

8.2. Mengirim Token CSRF

Ketika Anda mengirimkan formulir menggunakan metode POST, PUT, PATCH, atau DELETE, Anda harus menyertakan token CSRF dalam formulir tersebut. Anda dapat menyertakan token CSRF menggunakan directive @csrf di Blade:

<form method="POST" action="/simpan-data">
    @csrf
    <!-- Form fields -->
</form>

8.3. Mengecualikan Route dari CSRF Protection

Dalam beberapa kasus, Anda mungkin perlu mengecualikan route tertentu dari CSRF protection. Misalnya, jika Anda menerima webhook dari layanan eksternal. Anda dapat melakukan ini dengan menambahkan URL route ke array $except di middleware VerifyCsrfToken.

9. Route Caching: Meningkatkan Performa Aplikasi

Route Caching dapat secara signifikan meningkatkan performa aplikasi Anda dengan menyimpan route yang dikompilasi dalam cache. Ini mengurangi waktu yang dibutuhkan untuk Laravel untuk menemukan route yang sesuai untuk setiap permintaan.

9.1. Mengaktifkan Route Caching

Anda dapat mengaktifkan route caching menggunakan perintah Artisan:

php artisan route:cache

Perintah di atas akan menyimpan route yang dikompilasi dalam file cache.

9.2. Membersihkan Route Cache

Ketika Anda mengubah route Anda, Anda perlu membersihkan cache route agar perubahan diterapkan. Anda dapat melakukan ini menggunakan perintah Artisan:

php artisan route:clear

Peringatan: Pastikan untuk menjalankan php artisan route:clear setiap kali Anda melakukan perubahan pada file route Anda. Jika tidak, aplikasi Anda mungkin menggunakan route yang sudah usang. Jangan gunakan route:cache selama pengembangan. Hanya gunakan di lingkungan produksi setelah semua route Anda stabil.

10. Best Practices dalam Mendefinisikan Route

Berikut adalah beberapa best practices yang perlu diingat ketika mendefinisikan route dalam Laravel:

  • Gunakan controller: Hindari mendefinisikan logika yang kompleks dalam closure route. Gunakan controller untuk menjaga kode Anda tetap terorganisir.
  • Gunakan named route: Beri nama pada route Anda untuk memudahkan pemeliharaan kode.
  • Gunakan route grouping: Kelompokkan route yang memiliki karakteristik yang sama untuk menjaga kode Anda tetap terstruktur.
  • Gunakan resource controllers: Gunakan resource controller untuk mengelola operasi CRUD pada sumber daya.
  • Gunakan route model binding: Manfaatkan route model binding untuk menyederhanakan kode Anda.
  • Aktifkan CSRF protection: Pastikan CSRF protection diaktifkan untuk melindungi aplikasi Anda dari serangan CSRF.
  • Gunakan route caching: Aktifkan route caching untuk meningkatkan performa aplikasi Anda (hanya di lingkungan produksi).
  • Ikuti konvensi penamaan: Gunakan konvensi penamaan yang konsisten untuk route, controller, dan method Anda.
  • Dokumentasikan route Anda: Buat dokumentasi yang jelas tentang route Anda untuk memudahkan pemahaman dan pemeliharaan.

11. Kesimpulan: Menguasai Laravel Route untuk Aplikasi Web yang Lebih Baik

Laravel Route: Mendefinisikan URL Aplikasi Web adalah keterampilan penting bagi setiap pengembang Laravel. Dengan memahami berbagai cara mendefinisikan route, Anda dapat membangun aplikasi web yang terstruktur, mudah dipelihara, dan performan. Mulai dari dasar-dasar hingga fitur-fitur yang lebih canggih, seperti resource controllers dan route model binding, Laravel menawarkan berbagai alat untuk membuat manajemen route menjadi lebih mudah dan efisien. Pastikan untuk mengikuti best practices yang telah dibahas untuk memastikan kode Anda tetap bersih, terstruktur, dan mudah di-debug. Selamat mencoba dan semoga berhasil!

Tags: Aplikasi WebFrameworkLaravelPHPRouteRoutingURLWebWeb AppWeb Development
venus

venus

Related Posts

API

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

by Jasper
June 26, 2025
Hacker

Cara Meningkatkan Keamanan Website Laravel dari Serangan Hacker

by Willow
June 26, 2025
Development

Top 5 Package Laravel yang Mempermudah Pengembangan Website Anda

by Seraphina
June 26, 2025
Next Post

Laravel Middleware: Menambahkan Logika Tambahan pada Request

Leave a Reply Cancel reply

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

Recommended

Tutorial Laravel Dasar untuk Pemula Bahasa Indonesia: Mulai Membangun Aplikasi Web

June 9, 2025

Desain Website Modern dan Menarik: Tingkatkan Konversi dengan Visual yang Memukau

April 9, 2025

Lowongan Kerja Web Development Fresh Graduate: Tips Mendapatkan Pekerjaan Impian

June 9, 2025

Tools AI Gratis untuk Meningkatkan Produktivitas Konten Marketing Anda

June 27, 2025

Cara Membuat Artikel SEO-Friendly dengan Bantuan AI

June 26, 2025

Aplikasi AI Terbaik untuk Mengedit Foto Produk Online: Tingkatkan Penjualanmu Sekarang!

June 26, 2025

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

June 26, 2025

m.techreview.click

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Tools AI Gratis untuk Meningkatkan Produktivitas Konten Marketing Anda
  • Cara Membuat Artikel SEO-Friendly dengan Bantuan AI
  • Aplikasi AI Terbaik untuk Mengedit Foto Produk Online: Tingkatkan Penjualanmu Sekarang!

Categories

  • 2024
  • Agency
  • AI
  • Akses
  • Aktif
  • Akuntansi
  • Algoritma
  • Analisis
  • Anggaran
  • Antarmuka
  • Antisipasi
  • API
  • Aplikasi
  • Artikel
  • Asynchronous
  • Audio
  • Authentication
  • Authorization
  • Backend
  • Background
  • Backup
  • Bahasa
  • Bandwidth
  • Bantuan
  • Belajar
  • Bergabung
  • Biaya
  • Bisnis
  • Blogger
  • Bootstrap
  • Branding
  • Bukti
  • Cepat
  • Chatbot
  • Cloud
  • Coding
  • Company
  • Contoh
  • cPanel
  • CRM
  • CSS
  • Custom
  • Dampak
  • Dasar
  • Data
  • Database
  • Deployment
  • Desain
  • Design
  • Detail
  • Developer
  • Development
  • Digital
  • Diskusi
  • Dokumentasi
  • Domain
  • Download
  • Dukungan
  • E-commerce
  • Efektif
  • Efisiensi
  • Eloquent
  • Email
  • Engine
  • Enterprise
  • Error
  • Error generating categories
  • Estimasi
  • Etika
  • Event
  • Faktor
  • Fitur
  • Fleksibel
  • Fortify
  • Foto
  • Framework
  • Freelancer
  • Fresh
  • Frontend
  • Fungsi
  • Gambar
  • Garansi
  • Gratis
  • Hacker
  • Harga
  • Hemat
  • Here are 5 categories derived from the article title "Hosting dengan Dukungan Pelanggan 24 Jam: Bantuan Kapanpun Dibutuhkan": Hosting
  • Here are 5 categories derived from the article title "Hosting Domain Murah Indonesia dengan Proteksi DDoS Gratis: Solusi Terbaik untuk Website Anda": Hosting
  • Here are 5 categories derived from the provided list and the article titles: Company
  • Hosting
  • HTML
  • Hybrid
  • Implementasi
  • Indonesia
  • Inovasi
  • Inspirasi
  • Instalasi
  • Integrasi
  • Investasi
  • Jakarta
  • Jasa
  • JavaScript
  • Kantor
  • Kapasitas
  • Karir
  • Karyawan
  • Keamanan
  • Keandalan
  • Kebutuhan
  • Kecepatan
  • Kecil
  • Kehidupan
  • Kemampuan
  • Kemudahan
  • Kerja
  • Kesalahan
  • Kesehatan
  • Keterampilan
  • Keuntungan
  • Keyword
  • Kode
  • Kompetensi
  • Komponen
  • Komunikasi
  • Komunitas
  • Konsep
  • Konten
  • Konversi
  • Kreativitas
  • Kredibilitas
  • Kualitas
  • Langkah
  • Laravel
  • Latihan
  • Layanan
  • Library
  • Listener
  • Livewire
  • Logika
  • Logo
  • Lokal
  • Loyalitas
  • Machine Learning
  • Mahasiswa
  • Mahir
  • Maintenance
  • Manfaat
  • Manufaktur
  • Marketing
  • Masa Depan
  • Masyarakat
  • Medis
  • Memilih
  • Meningkatkan
  • Middleware
  • Migration
  • Mobile
  • Modern
  • Murah
  • MySQL
  • Observer
  • Online
  • Operasional
  • Optimasi
  • ORM
  • Otentikasi
  • Otomatis
  • Package
  • Panduan
  • Pasar
  • Pekerjaan
  • Pelajaran
  • Pelanggan
  • Pelatihan
  • Peluang
  • Pemahaman
  • Pemanfaatan
  • Pemasaran
  • Pemilihan
  • Pemrograman
  • Pemula
  • Penawaran
  • Pengalaman
  • Pengenalan
  • Pengguna
  • Penggunaan
  • Pengujian
  • Penipuan
  • Penjualan
  • Penulisan
  • Peran
  • Perbandingan
  • Perbedaan
  • Performa
  • Performance
  • Peringkat
  • Pertimbangan
  • Pertumbuhan
  • Perusahaan
  • PHP
  • Pilihan
  • Platform
  • Policy
  • Portofolio
  • Praktik
  • Prediksi
  • Pribadi
  • Process
  • Produktivitas
  • Profesional
  • Profil
  • Profile
  • Project
  • Proyek
  • Python
  • Queue
  • Real-Time
  • Redis
  • Referensi
  • Rekomendasi
  • Relasi
  • Remote
  • Request
  • Responsive
  • Retail
  • Retensi
  • Review
  • Riset
  • Ritel
  • Roadmap
  • Saham
  • Sanctum
  • Sederhana
  • Seeding
  • SEO
  • Sertifikat
  • Server
  • Sharing
  • Sinkronisasi
  • Sistem
  • Skalabilitas
  • Skill
  • Software
  • Solusi
  • Space
  • SSL
  • Startup
  • Strategi
  • Struktur
  • Studi Kasus
  • Sukses
  • Tanggung Jawab
  • Tantangan
  • Teknis
  • Teknologi
  • Teks
  • Template
  • Tenaga Kerja
  • Terbaik
  • Terjangkau
  • Terjemahan
  • Terlengkap
  • Terpercaya
  • Tim
  • Tips
  • Toko
  • Tools
  • Training
  • Transkripsi
  • Tren
  • Tugas
  • Tutorial
  • Uji Coba
  • UMKM
  • Umum
  • Unlimited
  • Uptime
  • URL
  • User Experience
  • Video
  • Visual
  • VPS
  • Wajah
  • Web
  • Web Development
  • Website
  • Windows
  • WordPress

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 m.techreview.click.

No Result
View All Result
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development

© 2024 m.techreview.click.